我想检查$ test2和$ test3中是否存在$ test1。
我尝试使用以下代码,但我没有得到正确的输出。
my $test1 = "cat";
my $test2 = "My name is cat";
my $test3 = "My name is apple";
if($test2 eq /$test1/){
print "yes2\n";
}
if($test3 eq /$test1/){
print "yes3\n";
}
答案 0 :(得分:2)
匹配正则表达式使用=~
运算符:
if($test2 =~ /$test1/){
print "yes2\n";
}
if($test3 =~ /$test1/){
print "yes3\n";
}
您可以使用字边界完全匹配,以避免匹配caterpillar
:
if($test2 =~ /\b$test1\b/){
print "yes2\n";
}
if($test3 =~ /\b$test1\b/){
print "yes3\n";
}
答案 1 :(得分:1)
这是另一种方法,不直接使用if
。
$result = ($test2 =~ /\b$test1\b/) ? "Matched" : "No Match";
print "$result\n";
答案 2 :(得分:0)
检查另一个字符串中包含的字符串的最简单方法是使用正则表达式:
print "Found." if ( $test2 ~= /$test1/);
在你的情况下,你甚至会更简洁:
foreach $str in ( $test1, $test2 ) {
print "Found $test1 in $str." if ( $str ~= /$test1/);
}
甚至,使用默认的assignemnt:
foreach ( $test1, $test2 ) {
print "Found $test1 in $str." if ( /$test1/ );
}
测试是针对$_
进行检查,tf.add_to_collection
由foreach子句自动分配。