String perl字符串与另一个字符串完全匹配

String perl字符串与另一个字符串完全匹配,string,perl,String,Perl,如果我想在另一个字符串中找到一个特定的(常量)字符串,那么=~是执行此任务还是使用另一个运算符更好?我应该使用/^$/ use constant { MYSTR => "HGjfslT", }; if (MYSTR =~ $rec_str){ ... } 干杯 卡罗尔=~非常适合这类任务 如果需要精确匹配,请使用^和$匹配开始和结束 虽然regex可以做你想做的事情,但是你可能想试试这个函数,因为这就是这个函数的具体用途,而且它比regex快。使用正则表达式进行更复杂的模式匹配 if

如果我想在另一个字符串中找到一个特定的(常量)字符串,那么=~是执行此任务还是使用另一个运算符更好?我应该使用/^$/

use constant {
MYSTR => "HGjfslT",
};

if (MYSTR =~ $rec_str){
...
}
干杯


卡罗尔

=~
非常适合这类任务

如果需要精确匹配,请使用
^
$
匹配开始和结束


虽然regex可以做你想做的事情,但是你可能想试试这个函数,因为这就是这个函数的具体用途,而且它比regex快。使用正则表达式进行更复杂的模式匹配

if ( index( MYSTR, $rec_str ) != -1 ) {
    ....
}
在正则表达式中执行
/^$/
是为了获得精确匹配。在这种情况下,使用
eq

if ( MYSTR eq $rec_str ) {
    ...
}

谢谢你的回答。我的问题是在另一个较长的字符串中找到该字符串。现在的问题是,如何搜索相同的字符串,但允许在MYSTR的任何位置使用一个通配符(特定集合的字符)?因此,再次使用MySTR=~/$ReCySTR/或索引,然后考虑HGJFSLT的任何字符可以从(A,C,W,Z)中提取,但一次一个,MySTR的其余部分应该相同。对于ex HGjfslT、HAjfslT、HGjfslW,可以接受,但不接受HGnfslTIf。如果要使用通配符或某种模式匹配,则regex是您的工具。我没有合适的解决方案,因为除了$rec_str之外,我认为我应该将MYSTR与7种模式的“HGjfslT”(7是“HGjfslT”的长度)进行匹配,并将1个字符替换为[a,C,W,Z],比如/[a,C,W,Z],“GjfslT/,[a,C,W,Z],“HjfslT”这似乎既不正确也不优雅。因此我想建立如下常量字符串:
code
$mystr=“”;foreach my$i(1..length(MYSTR)){$MYSTR.=/[HGjfslTACW]/;}
code
但当然,它不起作用。我想通过取HGjfslTACW中的任何字符来构建字符串,7次。有什么建议吗?我只是想亲自尝试一下,我认为你应该通过找出字符串之间的不同之处来解决这个问题,而不是找出相同之处。作为一个简单的解决方案,迭代一个字符串中的每个字符,并将其与另一个字符串中的对应字符进行比较,假设它们的长度相同。
if ( MYSTR eq $rec_str ) {
    ...
}