Wie zum extrahieren von Verzeichnisnamen aus Pfad in Perl
Habe ich einen Weg, wie diese
/home/user/doc/loc
Möchte ich extrahieren, home, user, Dok, loc getrennt. Ich habe versucht split (////)
und auch split("/")
aber keiner von Ihnen arbeitete. Bitte geben Sie mir ein Beispiel-Skript:
while (<EXPORT>) {
if (/^di/) {
($key, $curdir) = split(/\t/);
printf "the current dir is %s\n", $curdir;
printf("---------------------------------\n");
($home_dir, $user_dir, $doc_dir, $loc_dir) = split("/");
}
}
Aber es funktionierte nicht, also bitte helfen Sie mir.
File::Spec
undsplitdirs
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gegeben
$curdir
mit einem Pfad sind, würden Sie wahrscheinlich verwenden:auf einem Unix-ähnlichen system. Oder Sie verwenden würden,
File::Spec
undsplitdir
. Zum Beispiel:Ausgang (inklusive einer führenden Leerzeile):
split
's erste Ergebnis wird die Zeichenfolge vor der ersten Instanz des regulären Ausdrucks übergeben werden. Da hast du ein führendes "/" hier erhalten Sie eine leere Zeichenfolge in$home_dir
, 'Benutzer'$user_dir
und so weiter. Hinzufügenundef
auf der Liste Zuordnung ersten position oder alternativ schneiden Sie einen führenden Schrägstrich ersten.Außerdem bin ich nicht sicher, ob Sie anrufen können, split, ohne es
$curdir
hier. Versuchen:undef
als lvalue genau für, die. Es sollte auch darauf hingewiesen werden, dass das erste argument zusplit
ist nicht eine Zeichenfolge, sondern ein regulärer!