在 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
我在标量变量中有一个完整的目录路径和文件名。我想从文件名 (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