#!/usr/bin/perl use warnings; use strict; use IPC::Open3; $|=1; my $pid=open3(\*IN,\*OUT,\*ERR,'/bin/bash -i'); my $cmd = 'builtin alias'; #send cmd to bash print IN "$cmd\n"; my $result_err = ; print "ERR->$result_err\n"; my @aliases; my $buf; my $timeout = 1; #after 1 seconds no bash output, script continues eval{ local $SIG{ALRM} = sub { goto END }; alarm $timeout; while( sysread(OUT, $buf, 512)){ #print $buf; push @aliases,$buf; } alarm 0; }; END: print "@aliases\n";