print grep /test/, "mytestphrase";
使用 grep 语法,您可以传入不带引号的正则表达式。 我希望我的子程序具有如下相同的行为:
use strict;
use warnings;
sub testsub {
my $regex = shift;
my $phrase = shift;
print grep $regex, $phrase;
}
testsub /test/, "mytestphrase";
但是,它会在 testsub 调用之前尝试针对我的正则表达式评估 $_
,并发出以下错误:
Use of uninitialized value $_ in pattern match (m//) at ./a.pl line 14.
是否可以像 grep 命令一样调用 testsub 以及必须如何修改子例程以支持它?
最佳答案
像这样传递参数:
testsub qr/test/, "mytestphrase";
将$regex
的使用也改为/$regex/
:
#!/usr/bin/perl
use strict;
use warnings;
sub testsub {
my $regex = shift;
my $phrase = shift;
print grep /$regex/, $phrase;
}
testsub qr/test/, "mytestphrase";
关于regex - Perl如何将正则表达式传递给我的子例程,如grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490481/