我試圖運行與5.14.2當我嘗試在Windows上運行Perl單行程時,爲什麼我會在「-e行1」的EOF之前的任意位置出現「找不到字符串終止符」'「?
C:\Perl>perl -e 'print "Hello World \n"' Can't find string terminator "'" anywhere before EOF at -e line 1.
我缺少的是在Windows下?
我試圖運行與5.14.2當我嘗試在Windows上運行Perl單行程時,爲什麼我會在「-e行1」的EOF之前的任意位置出現「找不到字符串終止符」'「?
C:\Perl>perl -e 'print "Hello World \n"' Can't find string terminator "'" anywhere before EOF at -e line 1.
我缺少的是在Windows下?
你錯過了一個體面的shell,有明確的引用規則。在Windows上,只有雙引號被認爲是一個引號,而轉義規則定義不明確且不一致。嘗試:
perl -e "print qq{Hello World \n}"
我強烈建議避免任何東西,但最簡單的Windows上的一行。 (Windows單行程的另一個問題是Windows外殼不能擴展通配符,如果你在命令行上使用*.txt
,它會尋找一個名字爲*.txt
的文件,稍後會遇到這種情況。)
在Windows上,你鍵入的內容等同於:
perl -e "'print" "Hello World \n'"
也就是說,Perl的正試圖執行的代碼'print
包含單串Hello World \n'
@ARGV
。 (這不是一個新行,這是一個反斜槓,然後n
)。
在Windows上,引號應顛倒過來。因此,而不是:
C:\Perl>perl -e 'print "Hello World \n"'
它應該是:
C:\Perl>perl -e "print 'Hello World \n'"
(歸屬Learning Perl,第6版,第295)。
這將打印出「Hello World \ n」,\ n打印原樣而不是新隊。 – rodee
我也發現了這個工作。我使用的是Windows 7中使用c:\Windows\system32\cmd.exe
perl -e "$a=2; print(\"$a \n \");"
我用我的print語句逃生斜線去出現\引號」
如果你正在使用perl的5.10+,使用'-E'選項而不是'-e',它打開了新的功能,其中'say'是'print',但是在最後有一個隱含的換行符。'perl -E'說'hello world'「' –
它沒有' (不知道這是否適用於你...) – Apostolos