#!/usr/bin/perl # vi:ts=4 sw=4 et: use strict; use warnings; # these are available commands my %cmd = ( 'cat' => '/bin/cat', 'less' => '/usr/bin/less', 'more' => '/bin/more', 'strings' => '/usr/bin/strings', ); my $textfile = '/etc/passwd'; for my $k ( keys %cmd ) { my $success = 0; for ( 1 .. 100 ) { $success += open_close_pipe( $cmd{$k} ); } print "$cmd{$k}: $success/100 successful!", $/; } sub open_close_pipe { my $ext_cmd = shift; my $cmd = "$ext_cmd $textfile"; open my $handle, "$cmd |" or die "open: $cmd: $!\n"; # read at least one line while ( <$handle> ) { last; } close $handle or do { #warn "exitcode($?): $cmd: $!\n"; # to see exit code ... return 0; }; return 1; } __END__