Есть много различных способов общения между процессами в Perl - так много, что есть целый раздел документации по нему perlipc
Для простых требований, это действительно не имеет значения, что вы используете. Я бы сказал - используйте то, что наиболее очевидно, учитывая контекст.
Если вы просто запустив команду и захватывая вывод в виде блока:
my $df_out = `df -h`;
Затем рассмотрит обратные кавычки наиболее подходящими.
Если вы хотите сделать линейный разбор - обратные выходы будет работать, но в целом я предпочел бы open
.
E.g.
open (my $ssh_data, "-|", "ssh -n $hostname df");
my %size_of;
while (<$ssh_data>) {
my ($fs, $total, $used, $avail) = split;
$size_of{$fs} = $total;
}
close ($ssh_data);
IPC::Open2
и IPC::Open3
также варианты, чтобы позволить двунаправленную связь.
Одно предупреждение - я настоятельно рекомендую не, используя 2 аргумента open и используя лексические дескрипторы файлов. Хорошая привычка тренироваться - даже если это неважно сейчас привыкание к 3-arg open стоит делать.
Это не единственные пути. Например. при использовании 'open', всегда используйте [версию с несколькими аргументами] (http://perldoc.perl.org/functions/open.html) и передавайте аргументы команды в виде списка, если можете, чтобы избежать излишнего вызова оболочки и интерполяция. – reinierpost