Простой код Perl с здесь-документом работает в Linux, но не в Windows.

Во время практики я обнаружил, что следующий код отлично работает в Linux, но не в Windows.

print<<EOF;
this is a paragraph
EOF

В винде написано.

Не удается найти терминатор строки «EOF» нигде перед EOF на demo.pl.


person nikhil mehta    schedule 24.03.2014    source источник
comment
У вашего файла правильные концы строк? Linux: LF, Windows CR+LF   -  person urzeit    schedule 24.03.2014
comment
да, я проверил, что у него правильные концы строки   -  person nikhil mehta    schedule 24.03.2014
comment
И... Есть ли конец строки в конце файла?   -  person urzeit    schedule 24.03.2014
comment
да, это там. только что я попробовал тот же код, создав файл с помощью команды copy con, и он работал нормально. но не работал с файлом, созданным с помощью блокнота   -  person nikhil mehta    schedule 24.03.2014
comment
Тогда кажется, что ваш Windows Perl не понимает концы строк Windows и нуждается в концах строк Linux.   -  person urzeit    schedule 24.03.2014
comment
Что говорит онлайн demo.pl дамп? fileformat.info/tool/hexdump.htm   -  person mpapec    schedule 24.03.2014
comment
По сути всего 4 возможности. Перед токеном EOF есть пробел. После токена EOF есть пробел. В этой строке нет терминатора строки. Или разделители строк имеют неправильный формат, unix или windows.   -  person Miller    schedule 24.03.2014
comment
какой перл ты используешь? сигвин?   -  person ysth    schedule 24.03.2014
comment
@ysth я использую активный perl   -  person nikhil mehta    schedule 24.03.2014


Ответы (1)


Windows считает, что конец файла является частью завершающей строки EOF, поэтому не следует правилу, согласно которому завершающая строка должна появляться сама по себе. Вам нужно добавить новую строку после завершающей строки EOF.

print<<EOF;
this is a paragraph
EOF
# a new line
person Yu Hao    schedule 24.03.2014
comment
@nikhilmehta Это работает на моей машине (Perl v5.16.3, Windows 7 64-бит) - person Yu Hao; 24.03.2014
comment
@nikhilmehta Я использую Active Perl, интересно, имеет ли это значение. - person Yu Hao; 24.03.2014