use IPC::Open2; use IPC::Open3; use strict; use IO::Select; my %ssh_handles; my @nodes = qw(x y z); my $val = "/test/*/26/*testingTESTING*"; foreach my $node (@nodes) { my ( $wtr, $rdr, $err ); my $pid = open2( $wtr, $rdr, "ssh", $node ) or die "Failed to open ssh, $!"; $ssh_handles{$node}{in} = $wtr if ($wtr); $ssh_handles{$node}{out} = $rdr if ($rdr); $ssh_handles{$node}{err} = $err if ($err); } foreach my $node ( sort keys(%ssh_handles) ) { print { $ssh_handles{$node}{out} } "ls -l /mnt/*/$val 2>&1\nexit\n"; close $ssh_handles{$node}{out}; my $data = join "", readline $ssh_handles{$node}{in}; print "[", $data, "]\n"; }