Ошибка «Не могу использовать неопределенное значение в качестве ссылки на дескриптор файла» в Perl - PullRequest
2 голосов
/ 17 ноября 2010

Я получаю эту ошибку при запуске моего Perl-скрипта:

Невозможно использовать неопределенное значение в качестве ссылки на дескриптор файла в строке scr 44.

Строка 44:

open my $fh, "|-", "mail", "-s", $subject, $owner, "-c", $sendto
    or die "$0: could not start mail: $!";

Все выглядит хорошо.Что означает ошибка?

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Я думаю, что сообщение об ошибке в ошибке.Этот код:

open my $fh, '|-', 'perl', '-v' or die "$!\n";

умирает с сообщением об ошибке

Не удается использовать неопределенное значение в качестве ссылки на дескриптор файла ...

под Perl5.6.1, но умирает с

Форма списка открытых каналов не реализована ...

в Perl 5.12.1 (на Win32).

«Форма списка» означает указание программы и ее аргументов в качестве отдельных значений.Форма с одним значением работает в обеих версиях:

open my $fh, '|-', 'perl -v' or die "$!\n";
1 голос
/ 17 ноября 2010

Это довольно старый Perl, я предполагаю, что эта версия не поддерживает лексические дескрипторы файлов, поэтому «open my $ fh» не будет работать, так как древний Perl увидит это, по сути, open undef и, следовательно,сообщение об ошибке.Возможные решения:

  • Обновите свой Perl до бронзового века.
  • Вместо этого используйте синтаксис старой школы open FH.
  • Используйте gensym для созданиясимвол, который можно использовать в качестве дескриптора файла.
  • Использовать один из IO::* классов простого open.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...