Вы можете заменить все до последней косой черты (/
). Но такой подход непереносим. Ядро Perl поставляется с File :: Spec , что позволяет писать переносимый код:
#!/usr/bin/perl
use warnings;
use strict;
my @paths = (
"xyz/c.html",
"xyz/i/x.gif",
);
# Non-portable code using regex
foreach my $path (@paths) {
(my $basename = $path) =~ s,.*/,,;
print "$path -> $basename\n";
}
# Portable implementation using Perl core modules
use File::Spec;
foreach my $path (@paths) {
my(undef, undef, $basename) = File::Spec->splitpath($path);
print "$path -> $basename\n";
}
exit 0;
Тестовый прогон:
$ perl dummy.pl
xyz/c.html -> c.html
xyz/i/x.gif -> x.gif
xyz/c.html -> c.html
xyz/i/x.gif -> x.gif