由于某种原因,我无法让文件句柄与 Expect.pm 一起使用log_file
方法。我最初得到的帮助是如何将文件句柄传递给 Perl Expect 的 log_file 函数? https://stackoverflow.com/questions/3719545/passing-filehandle-to-perl-expects-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 http://perldoc.perl.org/IO/File.html对象得到can
工作方法。尝试
use IO::File;
my $fh = IO::File->new("file.out", ">>")
or die "Couldn't open file: $!";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)