运行perl脚本时出现此错误:
不能在scr第44行使用未定义的值作为文件句柄引用。
第44行:
open my $fh, "|-", "mail", "-s", $subject, $owner, "-c", $sendto
or die "$0: could not start mail: $!";
一切看起来都不错。错误是什么意思?
答案 0 :(得分:3)
我认为错误消息有误。这段代码:
open my $fh, '|-', 'perl', '-v' or die "$!\n";
因错误消息
而死亡不能将未定义的值用作文件句柄引用...
在Perl 5.6.1下,但随着
而死亡列表形式的管道未实施...
在Perl 5.12.1下(在Win32上)。
“列表表单”表示将程序及其参数指定为单独的值。单值表单在两个版本上运行:
open my $fh, '|-', 'perl -v' or die "$!\n";
答案 1 :(得分:1)
这是一个非常古老的perl,我猜这个版本不支持词法文件句柄,所以“打开我的$ fh”将无法正常工作,因为古代perl将会看到,基本上,open undef
和因此错误消息。可能的解决方案:
open FH
语法。gensym
生成可用作文件句柄的符号。IO::*
的{{1}}类之一。