如果我想在另一个字符串中找到一个特定的(常量)字符串,那么=〜是做这项工作还是更好地使用另一个运算符?我应该使用/ ^ $ /?
use constant {
MYSTR => "HGjfslT",
};
if (MYSTR =~ $rec_str){
...
}
干杯,
卡罗尔
答案 0 :(得分:2)
虽然正则表达式可以做你想要的,你可能想尝试index函数,因为这是函数的特定功能,它比正则表达式更快。使用正则表达式进行更复杂的模式匹配。
if ( index( MYSTR, $rec_str ) != -1 ) {
....
}
在正则表达式中执行/^ $/
是为了获得完全匹配。在这种情况下,请使用eq
:
if ( MYSTR eq $rec_str ) {
...
}
答案 1 :(得分:0)
=~
对于此类任务完全没问题。
如果您想要完全匹配,请使用^
和$
来匹配开头和结尾。
use constant {
MYSTR => "HGjfslT",
};
my $rec_str = "jfslT";
if (MYSTR =~ /$rec_str/){
print "Matches!";
}
if (MYSTR =~ /^$rec_str$/){
print "This will not match!";
}
$rec_str = "HGjfslT";
if (MYSTR =~ /^$rec_str$/){
print "This will match!";
}