Почему TextMate всегда жалуется на «Не удается найти терминатор строки», когда он запускает Perl-скрипт? - PullRequest
2 голосов
/ 11 июня 2009

У меня есть длинный Perl-скрипт, который прекрасно работает, но всегда выдает следующее предупреждение:

Can't find string terminator '"' anywhere before EOF at -e line 1

Я читал в другом месте онлайн, что это из-за неправильного использования одинарных или двойных кавычек, и ошибка, как правило, останавливает выполнение скрипта, но мой работает. Я почти уверен, что правильно использовал свои цитаты.

Есть ли что-нибудь еще, что может вызвать это предупреждение?

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

Я на самом деле получаю сообщение об ошибке, когда запускаю и простые скрипты, как этот:

#!/usr/bin/perl -w
use strict;
use warnings;

print "Hello world.";

Ответы [ 3 ]

3 голосов
/ 11 июня 2009

Да, вы правы, ваш скрипт делает это в TextMate, когда я тоже пробую.

Простое решение: не запускайте его с помощью TextMate; просто используйте командную строку:

cd Projectdirectory
chmod +x myscript.pl
./myscript.pl
Hello world

Более сложное решение: скажите TextMate, что их приложение не работает, и подождите, пока они его исправят. Ошибка исходит от другого Perl-скрипта, который вызывает TextMate. Даже совершенно пустой файл, запускаемый как Perl в TextMate, не работает с этой ошибкой.

1008 * для -Alex- *

2 голосов
/ 11 июня 2009

Бит "at -e line 1" означает, что он поступает из одной строки. Я подозреваю, что ваш длинный скрипт где-то запускает отдельный процесс perl (возможно, косвенно), и этот perl - это то, что выдает ошибку (и не делает того, что должно было сделать).

0 голосов
/ 11 июня 2009

Запустите отладчик, выполнив

perl -d ./youscript.pl

Затем продолжайте нажимать n [ENTER] (или просто ENTER после того, как вы нажмете n один раз), пока не увидите предупреждение - только что выполненная строка является вашим виновником. n означает следующую директиву отладчика.

...