为什么我的Perl祝福文件句柄不能用`can(‘print’)`’返回true?
发布时间:2020-12-16 06:27:13 所属栏目:大数据 来源:网络整理
导读:出于某种原因,我无法使用Expect.pm的log_file方法处理文件句柄.我最初在 How can I pass a filehandle to Perl Expect’s log_file function?得到了帮助,建议我使用IO :: Handle文件句柄传递给方法.这似乎是一个不同的问题,所以我想我会开始一个新的问题. 这
出于某种原因,我无法使用Expect.pm的log_file方法处理文件句柄.我最初在
How can I pass a filehandle to Perl Expect’s log_file function?得到了帮助,建议我使用IO :: Handle文件句柄传递给方法.这似乎是一个不同的问题,所以我想我会开始一个新的问题.
这是Expect.pm的违规部分: if (ref($file) ne 'CODE') { croak "Given logfile doesn't have a 'print' method" if not $fh->can("print"); $fh->autoflush(1); # so logfile is up to date } 那么,我尝试了这个示例代码: use IO::Handle; open $fh,">>","file.out" or die "Can't open file"; $fh->print("Hello,world"); if ($fh->can("print")) { print "Yesn"; } else { print "Non"; } 当我运行这个时,我得到两个(在我看来)冲突的项目.一行显示“Hello,world”和“No”输出的文件.在我看来,$fh-> can行应返回true.我错了吗? 解决方法
奇怪的是,看起来您需要创建一个真正的
IO::File 对象才能使can方法起作用.尝试
use IO::File; my $fh = IO::File->new("file.out",">>") or die "Couldn't open file: $!"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |