我必须拆分从另一个函数获得的路径名。我不想使用任何模块。我当前的代码是
my $val ="@missing";
foreach($val){
my f= split '/', $val;
say ($f[1]);
}
输出
xyz/c.html xyz/i/x.gif
我只想要这样的文件名。
c.html
x.gif
答案 0 :(得分:2)
您可以将所有内容替换为最后一个斜杠(/
)。但是这种方法是不可移植的。 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