Il semble que vous essayez de trouver le nom de fichier (sans extension) à partir d'un chemin de fichier qualifié complet. Si tel est le cas, alors regarder dans le module de base File::Basename
:
my $str = "/somedir/ref/some-dir/foo.word";
my($filename, $directory, $suffix) = fileparse($str, qr/\.[^.]*/);
La méthode fileparse()
prend deux arguments: la chaîne à analyser et le suffixe de fichier à supprimer. Si vous ne savez pas quel sera le suffixe du fichier, vous pouvez fournir une expression régulière. Dans ce cas, le suffixe correspond à une période suivie de zéro ou plusieurs caractères non-point.
Edit: Et si vous ne trouvez pas les noms de fichiers, et que vous voulez les lettres entre le dernier et le dernier /
.
, essayez ceci:
my $str = "/somedir/ref/some-dir/foo.word";
my @elems1 = split '/', $str;
my @elems2 = split '\.', $elems1[-1];
my $foo = $elems2[-2];
TIMTOWTDI! :-)
En quoi la structure est-elle la même? Avez-vous besoin de capturer les _letters_ entre le dernier slash_ et le _last dot_, ou ..? – mfontani
C'est exact, toujours les lettres entre la dernière barre oblique et le dernier point. – rplant23
Génial! Merci à tous. – rplant23