问这个我觉得很愚蠢,但我已经尝试了几件事,但我不知道该去哪里。
来自Expect.pm 文档:
$object->log_file("filename" | $filehandle | \&coderef | undef)
将会话记录到文件。发送到生成的进程或从生成的进程接收的所有字符都写入文件。
我想将 $filehandle 传递给 log_file。但是,当我尝试这样做时:
open (LOG, ">>" .$opt{l});
my $sess = Expect->spawn("telnet $ip");
$sess->log_file(LOG)
我在运行脚本的目录中得到一个名为“LOG”的文件。经过一番调查,我尝试了这个:
open (LOG, ">>" .$opt{l});
my $sess = Expect->spawn("telnet $ip");
my $fh = *LOG;
$sess->log_file($fh)
现在,我得到一个*main::LOG
在目录中命名的文件。我也有另一个文件,命名为我在-l
选项中指定的任何内容,但它只包含我发送到的行print LOG
。
我不确定文件处理功能是否在函数中进行了处理,或者我是否做错了什么。