嗨我在Perl中遇到正则表达式问题。如果我将正则表达式存储在perl中的变量中,则无法匹配。为什么会那样?我该如何解决这个问题?下面是我打印输出失败的代码:
my $str1 = 'abc..';
my $str2 = 'abcde';
my $pcode = $str1;
print $pcode;
if( $pcode =~ /$str2/)
{
print "Got";
}
else
{
print "Failed";
}
答案 0 :(得分:1)
你需要颠倒你的逻辑。正则表达式位于//
内,而不是字符串。
给你的变量更好的名字,当你颠倒你的逻辑时,它会变得更加明显。
my $pattern = 'abc..';
my $string = 'abcde';
if ($string =~ /$pattern/) {
print "Got";
} else {
print "Failed";
}
答案 1 :(得分:0)
您的if( $pcode =~ /$str2/)
订单错误。你需要改变它:
if( $str2 =~ /$pcode/)
基本上,$pcode
包含模式,因此它在//
内部以及您想要检查模式的字符串位于=~