Hi Rebell,
Deine verwendete regex passt auf den kompletten String und da Du kein Ersatzstring angegeben hast, ist Dein $neuerpfad dann natürlich auch leer.
Besser als die Verwendung von regex ist in diesem Fall das Modul File::Basename, da das Ganze dann auch plattformübergreifend funktioniert.
Code:
use File::Basename;
$pfad = "/etc/apache/httpd.conf";
$datei = basename($pfad);
$verzeichnis = dirname($pfad);
Natürlich führen hier viele Wege nach Rom. Informationshalber noch nen paar Methoden, aber wie gesagt, nimm besser File::Basename.
Code:
$pfad = "/etc/apache/httpd.conf";
$verzeichnis = $pfad;
$verzeichnis =~ s#(/.+)/[a-zA-Z.0-9]+$#$1#;
Oder auf ne ganz simple Art und Weise mit substr und rindex
Code:
$pfad = "/etc/apache/httpd.conf";
$verzeichnis = substr($pfad,0,rindex($pfad,"/"));
gruss,
phate
Lesezeichen