gpt4 book ai didi

perl - 为什么我的Perl祝福的文件句柄不使用 `can(' print')`'返回true?

转载 作者:行者123 更新时间:2023-12-04 18:15:45 26 4
gpt4 key购买 nike

由于某些原因,我无法使用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 - 为什么我的Perl祝福的文件句柄不使用 `can(' print')`'返回true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com