Нельзя найти терминатор строки "str" ​​нигде до EOF - PullRequest
10 голосов
/ 29 октября 2010

Почему я получаю эту ошибку?

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

Ответы [ 3 ]

25 голосов
/ 29 октября 2010

Здесь не должно быть пробела:

str 
   ^

Терминатор heredoc должен находиться на отдельной строке и не должен содержать что-либо (даже пробел ) окружающие его.

1 голос
/ 29 октября 2010

Вы можете использовать диагностика , чтобы получить более подробную справку по предупреждающим сообщениям:

Невозможно найти терминатор строки "str" ​​где-либо до того, как строки EOF (F) Perl могут растянутьсяпо нескольким строкам.Это сообщение означает, что закрывающий разделитель был опущен.Поскольку заключенные в скобки кавычки подсчитывают уровни вложенности, в следующих скобках отсутствует последняя заключительная скобка:

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

> Если вы получаете эту ошибку из документа здесь, возможно, вы включили невидимый пробел до или послеВаш закрывающий тег.Хороший редактор-программист поможет найти эти символы.

 Uncaught exception from user code:

Не удается найти терминатор строки "str" ​​где-либо до EOF

1 голос
/ 29 октября 2010

Или Лучше Используйте Eclipse Perl Integration Integration или Padre для редактирования вашего кода Perl.Он показывает ошибки, связанные с синтаксисом в реальном времени.

...