为什么我的Perl祝福文件句柄不能用`can(‘print’)`’返回true?

为什么我的Perl祝福文件句柄不能用`can(‘print’)`’返回true?,第1张

概述出于某种原因,我无法使用Expect.pm的log_file方法处理文件句柄.我最初在 How can I pass a filehandle to Perl Expect’s log_file function?得到了帮助,建议我使用IO :: Handle文件句柄传递给方法.这似乎是一个不同的问题,所以我想我会开始一个新的问题. 这是Expect.pm的违规部分: if (ref($file) 出于某种原因,我无法使用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 "Yes\n";}else{  print "No\n";}

当我运行这个时,我得到两个(在我看来)冲突的项目.一行显示“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: $!";
总结

以上是内存溢出为你收集整理的为什么我的Perl祝福文件句柄不能用`can(‘print’)`’返回true?全部内容,希望文章能够帮你解决为什么我的Perl祝福文件句柄不能用`can(‘print’)`’返回true?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1257859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存