Распечатать текст произвольной формы в функции Perl?

Я получаю очень странную ошибку при попытке напечатать произвольный текст в подпрограмме на Perl. Ниже приведен код, который я вызываю

    print OUTFILE <<"HEADER";
The freeform text would go here
HEADER

Странно то, что это работает только в основной части моей функции. Как только я помещаю его в вызов функции, я получаю эту ошибку:

Can't find string terminator "HEADER" anywhere before EOF

Это означает, что он не может найти ЗАГОЛОВОК, хотя он там. Нельзя ли использовать произвольный текст внутри функции (подпрограммы)?


person user494216    schedule 14.11.2010    source источник


Ответы (1)


Убедитесь, что перед идентификатором конечной строки нет пробела/табуляции/отступа, то есть HEADER. Ваш код должен выглядеть так:

        function someFunc(){
          print OUTFILE <<"HEADER";
      The freeform text would go here
HEADER
        }

Обратите внимание, что перед HEADER нет пробела/табуляции/отступа. Он должен начинаться с первого символа своей строки.

Дополнительную информацию см. в этом руководстве:

Цитата:

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

person Sarfraz    schedule 14.11.2010
comment
Спасибо, это имеет смысл. Вкладка-HEADER — это не то же самое, что HEADER. Так уж получилось, что без вызова функции ни одна из строк не была отступлена. - person user494216; 15.11.2010
comment
Будьте осторожны: если вы сделаете отступ в тексте, начальный пробел будет включен. Есть много способов обойти это, некоторые из них довольно гладкие и удобные, но вы должны знать об этом. - person tchrist; 15.11.2010
comment
@tchrist: Это правда, вокруг него не должно быть пробелов. - person Sarfraz; 15.11.2010