如何检查与变量匹配而不是简单文本。 我试过了:
my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if ($_text =~ $_searchingText) {
print 'yes!';
}
答案 0 :(得分:2)
两个选项:
以正则表达式模式插入$_searchingText
:
print 'yes' if $_text =~ /$_searchingText/;
将$_searchingText
声明为模式:
$_searchingText = qr/me/;
print 'yes' if $_text =~ $_searchingText;
答案 1 :(得分:1)
看起来索引函数可以完成你想做的事情(似乎是在$_searchingText
内“索引”$_text
。)
试试这个:
#!/usr/bin/perl -w
use strict;
my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if(index $_searchingText, $_text){
print 'yes!';
}
或者您可以将您的变量与正则表达式匹配运算符匹配($_searchingText
):
#!/usr/bin/perl -w
use strict;
my $_text = 'Please Help me here!';
my $_searchingText = 'me';
if($_text =~ m/$_searchingText/){
print 'yes!';
}
希望有所帮助;如果我能澄清,请告诉我。
答案 2 :(得分:1)
正如其他人所指出的那样,您需要将正则表达式标记放在正则表达式周围:
if ($_text =~ /$_searchingText/) {
而不是
if ($_text =~ $_searchingText) {
Perl也可以有一个标量Perl变量包含一个正则表达式而不只是一个字符串或一个数字:
my $_text = 'Please Help me here!';
my $_searchingText = qr/me/;
if ($_text =~ $_searchingText) {
print 'yes!';
}
qr
运算符使$_searchingText
中包含的值成为正则表达式,因此您不需要if
语句中的分隔符。他们是可选的。请参阅Regexp Quote-Like Operators。