my $cmd = '/usr/bin/strings /etc/passwd';
open my $handle, "$cmd |" or die "open: $cmd: $!\n";
# read at least one line
while ( <$handle> ) {
last;
}
close $handle or die "$cmd; exit code($?): $!\n";
####
#!/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__
####
$ perl read2.pl
/bin/cat: 100/100 successful!
/usr/bin/less: 38/100 successful!
/bin/more: 31/100 successful!
/usr/bin/strings: 40/100 successful!
####
$ perl read2.pl
/bin/cat: 100/100 successful!
/usr/bin/less: 16/100 successful!
/bin/more: 26/100 successful!
/usr/bin/strings: 32/100 successful!
####
$ perl read2.pl
/bin/cat: 35/100 successful!
/usr/bin/less: 0/100 successful!
/bin/more: 41/100 successful!
/usr/bin/strings: 37/100 successful!
####
$ perl read2.pl
/bin/cat: 100/100 successful!
/usr/bin/less: 100/100 successful!
/bin/more: 100/100 successful!
/usr/bin/strings: 100/100 successful!