在 Perl 中替换给定目录中的字符串(文件名)

Substitute strings (filename) in given directory in Perl

我在标量变量中有一个完整的目录路径和文件名。我想从文件名 (ab%ABpeterfra) 中提取某种字符串。

脚本如下:

use strict; use warnings;

my $file = "/this/is/my/directory/ab%ABpeterfra";
print "file:$file\n";

my @array = split('%', $file); print $array[1]."\n"; 

my $final = substr($array[1], 2);

print "final:$final\n"; #peterfra

这里我得到了想要的结果,即 peterfra。

但是有什么方法可以使用 Perl 替换并获得相同的结果或解决问题的更好方法吗?

使用替换运算符的等价物是

my $final = $file =~ s/^[^%]*%..//sr;   # $file if no match

但与其带走我不想要的,我更愿意找到我想要的。

使用匹配运算符的等价物是

my ($final) = $file =~ /%..(.*)/s;      # undef if no match