use IPC::Run3 'run3'; my $stdin = "password\n"; my @extcmd = ('cat'); run3 \@extcmd, \$stdin, \my $stdout, \my $stderr or die "run3 failed"; $? and die "run3: \$?=$?"; print "stdout: <<$stdout>>\n"; print "stderr: <<$stderr>>\n";