2014-06-26 16 views
1

如果我在代碼中放置變量而不是regexp,程序沒有找到模式,爲什麼?ARGV中的正則表達式。 Perl

不工作:

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

作品:

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

另外,如果我輸入作爲參數進行編程不服像W {3,2}時,2個字作爲第二論據。如何避免這種情況?

回答

3

這是一個shell問題。附上參數報價:

perl yourscript.pl '\w{3}' 

然後取出在代碼中逸出,因此$regex變量可以插值:

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