在外殼命令,'abc'def
,abc'def'
,abcdef
和'abcdef'
都是等價的,所以'...'Hello'...'
相同'...Hello...'
。
對於perl -wE 'say('Hello')'
,你的shell調用
exec("perl", "-wE", "say(Hello)")
如果say
第一個參數是一個裸字,並沒有子已被宣佈與該名稱,裸字作爲一個文件句柄。
對於perl -wE 'say length('Hello')'
,你的shell調用
exec("perl", "-wE", "say length(Hello)")
如果發現裸詞,沒有子已經被這個名字聲明,預計不會文件句柄,下一個記號不是=>
,和use strict 'subs';
沒有生效,空白字符是返回自身的字符串文字。
解決方案:
perl -wE 'say("Hello")' # exec("perl", "-wE", "say(\"Hello\")")
perl -wE 'say(q{Hello})' # exec("perl", "-wE", "say(q{Hello})")
perl -wE 'say('\''Hello'\'')' # exec("perl", "-wE", "say('Hello')")
注意perl
不需要的代碼是一個單獨的參數。
perl -wE'say("Hello")' # exec("perl", "-wEsay(\"Hello\")")
perl -wE'say(q{Hello})' # exec("perl", "-wEsay(q{Hello})")
perl -wE'say('\''Hello'\'')' # exec("perl", "-wEsay('Hello')")