EOF

2010-10-29 17 views
9

'dan önce dize sonlandırıcı "str" ​​bulamıyor Neden bu hatayı alıyorum?EOF

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"; 
} 

cevap

24

Burada bir boşluk olmamalıdır:

str 
^

heredoc sonlandırıcı kendi başına bir satırda olmalıdır ve şey (hatta uzay) onu çevreleyen olmamalıdır.

+1

İnsanların, sonu çizgisinde boşluk göstermek için ellerinden editörü yapılandırmak tavsiye edebilir EOF önce "str" ​​bulunamıyor hatalar – mfontani

+0

Heredoc'i yok etmeyin. Oldukça muhteşem. – tchrist

1

Veya Daha İyi Kullanım Perl kodunuzu düzenlemek için Eclipse Perl Entegrasyon eklentisi veya Padre kullanın. Gerçek zamanlı sözdizimi ile ilgili hataları gösterir.

1

Sen uyarı mesajlarının daha ayrıntılı yardım almak için diagnostics kullanabilirsiniz:

yerde EOF önce (F) Perl dizeleri birden fazla satır üzerinde uzatabilirsiniz dize sonlandırıcı "str" ​​bulunamıyor. Bu mesaj, anlamına gelir, kapanma sınırlayıcısı ihmal edildi. parantez tırnak sayımı yuvalama seviyeleri olduğundan, nihai parantezi eksiktir aşağıdadır: önce veya sonra

bir buraya-belgeden bu hatayı alıyorsanız
print q(The character '(' starts a side comment.); 

>, dahil olabilir görünmeyen boşluk senin kapanış etiketi. İyi bir programcının editörü, bu karakterleri bulmanıza yardımcı olacak bir yol bulacaktır.

Uncaught exception from user code: 

o bu tür yakalamak yardımcı olarak dize terminatör yerde