Manish Tiwari wrote:
> Hi
>
> i was trying to do something like
>
> @data = `ls -ltr ` ;
>
> < do some operation check whether ls command actually worked>
>
> now i want to pass the contents of "data" thru unix commands like egrep
> and sort
>
>
> so in all operation will be like
>
> ls -ltr | grep -v total | sort +8
>
> but making sure that ls command actually worked
use strict;
my @data;
@data = `ls -ltr `;
print "\$? = '$?'\n";
print "data[0] = '$data[0]'\n" if @data;
#try one of these two tests (with and/or without the $? part)
if (not $? and @data and $data[0] !~ /^ls:/i) {
print "1 on to piping\n";
}
if ($? or (@data and $data[0] !~ /^total/i)) {
print "Error\n";
}
exit;
__END__
$? may still return 0 (depending on app) and output the error message to stderr.
$? >> 8 would be the real exit status of the `` command.
If you redirect stderr to stdout, you may be able to trap the error
message which will hopefully be 'ls: <text>'. You may have to use a
pipe and redirect 2>&1 to get stderr redirected.
--
,-/- __ _ _ $Bill Luebkert ICQ=162126130
(_/ / ) // // DBE Collectibles Mailto:[EMAIL PROTECTED]
/ ) /--< o // // http://dbecoll.tripod.com/ (Free site for Perl)
-/-' /___/_<_</_</_ Castle of Medieval Myth & Magic http://www.todbe.com/
_______________________________________________
Perl-Unix-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs