2016-05-23 32 views
0

iam使用perl打印某些數據,但它給了我錯誤Can not找到字符串結束 「EOF」 EOF之前的任何地方以在perl中獲取錯誤在/var/www/sandeep/testeof.cgi第2行EOF處找不到字符串終結符「EOF」任何位置第2行

的代碼是:

#!/usr/local/bin/perl -w 
print <<EOF; 
hello 
EOF 

錯誤:

[Mon May 23 11:32:12 2016] [error] [client 192.168.10.117] Directory index forbidden by Options directive: /var/www/, referer: http://192.168.10.100/ [Mon May 23 11:32:12 2016] [error] [client 192.168.10.117] malformed header from script. Bad header=hello: testeof.cgi [Mon May 23 11:32:18 2016] [error] [client 192.168.10.117] Directory index forbidden by Options directive: /var/www/, referer: http://192.168.10.100/ [Mon May 23 11:32:18 2016] [error] [client 192.168.10.117] Can't find string terminator "EOF" anywhere before EOF at /var/www/sandeep/testeof.cgi line 2. [Mon May 23 11:32:18 2016] [error] [client 192.168.10.117] Premature end of script headers: testeof.cgi

我試圖把EOF在單引號(打印< <「EOF」),如圖this answer,但誤差相同。用這種方法打印在同一目錄下的其他文件中工作。
我也稱爲this question (Why am I getting 「Can't find string terminator 」'「 anywhere before EOF at -e line 1」 when I try to run a Perl one-liner on Windows?)但是在這個問題OP是使用不同的方法來打印和IAM使用Linux(UBUNTU)。

請指導,我做錯了什麼?

+1

我在運行代碼時沒有看到該錯誤。請提供一個實際產生錯誤的最小示例。 – Henrik

+1

嘗試在EOF之後添加結束行。 –

回答

1

你的代碼是正確的。

確保您EOF爲上,周圍有沒有空格的單行。

使用引號來指定您的終結者:

print <<_EOF_; 
hi $$ 
_EOF_ 

print <<"_EOF_"; 
hi $$ 
_EOF_ 

兩個是完全一樣的(打印hi 12345其中12345是當前進程的進程ID),但相對於單引號,第二個是比較明確的:

print <<'_EOF_'; 
hi $$ 
_EOF_ 

這一次將打印hi $$,因爲沒有變量替換與單打報價進行。

的Web腳本總是需要(至少在Apache)的標題。添加此行作爲第一個輸出行以擺脫malformed header from script錯誤:

print "Content-type: text/html\r\n\r\n"; 
相關問題