Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么下面的代码不能按预期工作?_Perl - Fatal编程技术网

Perl 为什么下面的代码不能按预期工作?

Perl 为什么下面的代码不能按预期工作?,perl,Perl,我有下面的代码来匹配文件中的特定关键字,请注意,该文件中存在特定关键字。(核实) 是否打算将$tempStr解释为正则表达式?如果是这样,那么您应该知道?是一个正则表达式运算符,并且不会与目标字符串中的?完全匹配 另外,它在Ma之后有一个空格,但是您的示例文件有Maik,因此该部分不匹配 这些更改将产生不同的结果: my $tempStr='=?UTF-8?B?U2Now4PCtm5l?=\, Ma'; # remove the extra space grep (/\Q$rx/i, @msg

我有下面的代码来匹配文件中的特定关键字,请注意,该文件中存在特定关键字。(核实)


是否打算将
$tempStr
解释为正则表达式?如果是这样,那么您应该知道
是一个正则表达式运算符,并且不会与目标字符串中的
完全匹配

另外,它在
Ma
之后有一个空格,但是您的示例文件有
Maik
,因此该部分不匹配

这些更改将产生不同的结果:

my $tempStr='=?UTF-8?B?U2Now4PCtm5l?=\, Ma'; # remove the extra space

grep (/\Q$rx/i, @msg_arr); # Add \Q to match the literal string $tempStr in regexp
或者您可以从一开始就将
$tempStr
设置为真正的regexp:

my $tempStr=qr/=\?UTF-8\?B\?U2Now4PCtm5l\?=\\, Ma/;
或者您可以将其保留为字符串,但使用regexp语法(需要额外加倍双反斜杠,非常难看):


是否打算将
$tempStr
解释为正则表达式?如果是这样,那么您应该知道
是一个正则表达式运算符,并且不会与目标字符串中的
完全匹配

另外,它在
Ma
之后有一个空格,但是您的示例文件有
Maik
,因此该部分不匹配

这些更改将产生不同的结果:

my $tempStr='=?UTF-8?B?U2Now4PCtm5l?=\, Ma'; # remove the extra space

grep (/\Q$rx/i, @msg_arr); # Add \Q to match the literal string $tempStr in regexp
或者您可以从一开始就将
$tempStr
设置为真正的regexp:

my $tempStr=qr/=\?UTF-8\?B\?U2Now4PCtm5l\?=\\, Ma/;
或者您可以将其保留为字符串,但使用regexp语法(需要额外加倍双反斜杠,非常难看):


谢谢,您的第一个解决方案工作正常,但不幸的是,我不能去,因为它会影响其他的变化也,第二和第三个解决方案不工作。真的很感谢你的努力,你能帮我从第二种或第三种方法中得到解决方案吗?不要告诉我“不行”。我在发布之前先测试一下。您的整个原始程序在更改了这一行后仍能正常工作(打印
regex_ok=1
)。谢谢,您的第一个解决方案工作正常,但不幸的是,我无法使用它,因为它会影响其他更改,第二个和第三个解决方案也无法工作。真的很感谢你的努力,你能帮我从第二种或第三种方法中得到解决方案吗?不要告诉我“不行”。我在发布之前先测试一下。更改了这一行后,您的整个原始程序都可以运行(打印
regex\u ok=1
)。
my $tempStr='=\?UTF-8\?B\?U2Now4PCtm5l\?=\\\\, Ma';