Command-Line
為什麼我不能在命令行的@ARGV 中傳遞正則表達式?
為什麼我不能用
if($l =~ $ARGV[0])
,但我可以用if($l =~ /$ARGV[0]/g
?第一種情況
$ perl script.pl '/^[\w]/g'
第二種情況
$ perl script.pl '^[\w]'
字元串和正則表達式在 perl 中是不同的原始類型,所有放在
@ARGV
數組中的變數都是核心在啟動時給程序的簡單字元串;$ARGV[0]
是標量字元串,而不是正則表達式。當你這樣做時,
if($l =~ $ARGV[0])
這相當於代替。在前一種情況下,斜杠只是字元串中的字元,而在後一種情況下,它們是分隔正則表達式的 Perl 語法的一部分。$ARGV[0]``'/^[\w]/g'``if($l =~ '/^[\w]/g')``if($l =~ /^[\w]/g)