2010-10-29 23 views
9

爲什麼我會收到此錯誤?在EOF之前的任何位置找不到字符串終止符「str」

use strict; 
use warnings; 

my $str = <<str; 
88087 23/11/2010 
35192 25/07/2010 
B3J 5X9 17/08/2011 
C8U 5L6 16/08/2011 
F4Q 3B4 17/10/2010 
D3X 9P4 11/05/2010 
O7L 6Z8 28/02/2010 
W8L 9P2 05/09/2010 
str 

print $str; 

my @arr = split/\n/,$str; 
foreach (@arr) { 
     my @tmp = split/\t/; 
     print "$tmp[1]\n"; 
} 

回答

24

你不應該在這裏有一個空間:

str 
^

的定界符終止應單獨放置在一個行,應該不會有什麼(甚至沒有空間)周圍。

+1

可能我建議人們配置他們的編輯器來展示在結束線的空白,之前的任何地方,因爲它確實有助於抓住這幾樣錯誤 – mfontani 2010-10-29 08:28:33

+0

不要遺傳。這非常奇妙。 – tchrist 2010-10-30 04:38:24

1

或者更好地使用Eclipse Perl集成插件或Padre編輯您的Perl代碼。 它顯示實時語法相關的錯誤。

1

您可以使用diagnostics獲得的警告消息更詳細的幫助:

無法找到字符串結束「STR」 EOF 之前的任何地方(F)Perl語句可以跨越多行。此消息表示 省略了結束分隔符。因爲括號報價 計數 嵌套級別中,缺少了最後括號如下:

print q(The character '(' starts a side comment.); 

>如果您收到從這裏的文檔此錯誤,你可能已經包含 看不見空格之前或之後你關閉標籤。一個好的程序員的編輯器 將有一種方法來幫助你找到這些字符。

Uncaught exception from user code: 

無法找到字符串結束「STR」 EOF

相關問題