Я чувствую себя глупо, спрашивая об этом, но я попробовал пару вещей, и я не уверен, куда идти с этим.
Из документации Expect.pm :
$object->log_file("filename" | $filehandle | \&coderef | undef)
Запись сеанса в файл. Все символы отправлены или получены от
порожденный процесс записывается в файл.
Я бы хотел передать дескриптор файла $ в файл_файла. Однако, когда я попробовал это:
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
.
Я не уверен, что в функции скрыта функция обработки файлов или я что-то не так делаю.