У меня есть сценарий Perl, который отлично работает под Perl 5.005 на HPUX 11i v3, и это вызывает небольшую проблему под Perl 5.10 на моем Ubuntu 11.04.
Это сводится к линии, как:
open (CMD, "do something | grep -E 'sometext$' |");
(на самом деле он захватывает ps -ef
вывод, чтобы увидеть, работает ли процесс, но я не думаю, что это важно (a) ).
Теперь это нормально работает в среде HPUX, но, когда я пробую его в Ubuntu, я получаю:
sh: Syntax error: Unterminated quoted string
Вставляя обильные операторы отладки, я отследил их до этой оскорбительной строки, затем начал удалять символы один за другим, пока он не перестал жаловаться. К счастью, $
был первым, который я попробовал, и он перестал выдавать мне ошибку, поэтому я изменил строку на:
open (CMD, "do something | grep -E 'sometext\$' |");
и все работало нормально (во всяком случае, под Linux - я не проверял это на HPUX, поскольку у меня сегодня нет доступа к этой машине - если это сработает, я просто воспользуюсь этим подходом, но все равно хотел бы чтобы понять, почему это проблема).
Так что кажется очевидным, что $
"глотает" заключительную одинарную кавычку в моей среде Linux, но явно не в HPUX.
Мой вопрос просто: почему? Конечно, не было никаких массовых изменений между 5.005 и 5.10. Или мне не хватает какого-то элемента конфигурации?
(a) Но, если вы знаете лучший способ сделать это без внешних модулей CPAN (т. Е. Только с базовой установкой Perl 5.005), я был бы рад знать об этом.