ARGV中的正则表达式。 Perl的

时间:2014-06-26 15:54:41

标签: regex perl

如果我在代码中放置变量而不是regexp,程序没有找到模式,为什么?

无效:

my $regex = $ARGV[0];
print $file "$1\n" if $_ =~ /(\b\$regex\b)/;

使用:

print $file "$1\n" if $_ =~ /(\b\w{3}\b)/;

此外,如果我作为参数输入像W {3,2}这样的程序smth,则2计为第二个参数。如何避免?

1 个答案:

答案 0 :(得分:3)

这是一个shell问题。将参数括在引号中:

perl yourscript.pl '\w{3}'

然后删除代码中的转义,以便可以插入$regex变量:

my $regex = $ARGV[0];
print $file "$1\n" if $_ =~ /(\b$regex\b)/;   # Removed \ before $regex
相关问题