下面的脚本实现了我想要的功能,但是有两行额外的正则表达式似乎是错误的。
第一个 /
之前部分的长度可以是任意长度,所以我不认为我可以使用 substr()
...
问题
是否可以避免两个额外的正则表达式行并在 if 条件中执行它?
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $a = "tank5/a/b";
my $b = "pool/a/b";
$a = $1 if $a =~ qr{.+?/(.+)};
$b = $1 if $b =~ qr{.+?/(.+)};
if ($a eq $b) {
print "same\n";
}
最佳答案
你可以尝试:
print "same\n" if (last_part($a) eq last_part($b));
sub last_part { $_[0] =~ s{^.*?/}{/}r }
如果你没有 5.14+,你就必须使用一些更冗长的东西。
sub last_part { my ($s) = @_; $s =~ s{^.*?/}{/}; $s }
关于regex - 可以在 if 条件下比较部分字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649069/