in reply to Any way to make it quicker?

use Net::OpenSSH::Parallel:
my $pssh = Net::OpenSSH::Parallel->new; open(my $fh, '<', 'servers.txt'); while (<$fh>){ chomp; my ($user, $password, $host) = split(':', $_); $pssh->add_host($host, user => $user, password => $password); } $pssh->push('*', cmd => 'cd /tmp && perl p.pl'); $pssh->run;