Я вижу три вещи не так с вашим кодом:
- вы не проверяете возвращаемое значение
open
- вы используете версию с двумя аргументами
open
- и вы используете файловый дескриптор голого слова
Первый, вероятно, скажет вам, что происходит не так, два других не являются ошибочными сами по себе, но не являются современным Perl.Я бы написал такой код
open my $fh, "-|", "/usr/bin/ssh $host cat /home/log_[12].log 2>>./errorLog.log"
or die "could not run remote command: $!";
Или еще лучше
use IPC::Open3;
use Symbol 'gensym';
my $err = gensym; #deal with stupidity in the IPC::Open3 interface
my $pid = open3 my $in, my $out, $err,
"/usr/bin/ssh", $host, "cat", "/home/log_[12].log";
while (<$out>) {
#do stuff with the stdout of ssh
}
While (<$err>) {
#do stuff with the stderr of ssh
}