Although your advice is probably sound (I haven't checked). I don't
think that posting a link to an illegal copy of Programming Perl is fair
on the authors, publisher, or the readers of this list.
Lyle
On 12/08/2012 22:11, Tim Bolshaw wrote:
Chapter 16.3 of /Programming Perl/ has a good basic explanation of how
to use pipes in Perl. (It is available online at
http://docstore.mik.ua/orelly/perl2/prog/ch16_03.htm if you do not yet
have a copy.) However, if you are doing extensive and complex
processing that relies on pipes, you will may find it easier to use
the Perl module IO::Pipe.
Tim.
On Mon, Aug 13, 2012 at 3:48 AM, Edwards, Mark (CXO)
<mark.r.edwa...@hp.com <mailto:mark.r.edwa...@hp.com>> wrote:
The typical test for open is ...
open(HANDLE, "something _/to/_open") or die "Open failed, $!";
That works on Windows for a file but not a pipe.
$status=open(PIPE, "hostname |");
This works and I can read from the pipe but $status is always
non-zero so I don't know whether it succeeds or fails. Even
testing for $! or $? doesn't work. $? is always -1 and $! is
always " Inappropriate I/O control operation". This works as
expected on Unix be how do I test for success or failure of
opening the pipe?
The first half of the code below works but I forced a failure on
the second half
Code
----------------------------------------
use warnings;
use strict;
my($pid, $pipe);
print "Open pipe with real file\n";
$pid=open(PIPE, "hostname |");
print("OS Error: $!\n");
print("Child Error: $?\n");
print("PID: $pid\n");
print "Host Name:", <PIPE>;
close PIPE;
print "\n\n";
print "Open pipe with fake file to force a failure\n";
$pid=open(PIPE, "non_existent_file |");
print("OS Error: $!\n");
print("Child Error: $?\n");
print("PID: $pid\n");
print "Host Name:", <PIPE>;
close PIPE;
Output
----------------------------------------
======= Open pipe with real file
OS Error: Inappropriate I/O control operation
Child Error: -1
PID: 10464
Host Name:MEDWARDS5
====== Open pipe with fake file to force a failure
OS Error: Inappropriate I/O control operation
Child Error: -1
PID: 10468
'non_existent_file' is not recognized as an internal or external
command,
operable program or batch file.
Host Name:
_______________________________________________
ActivePerl mailing list
ActivePerl@listserv.ActiveState.com
<mailto:ActivePerl@listserv.ActiveState.com>
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
--
Tim Bolshaw
timothybols...@gmail.com <mailto:timothybols...@gmail.com>
Mobile: +66-(0)87 072 5009
_______________________________________________
ActivePerl mailing list
ActivePerl@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
ActivePerl mailing list
ActivePerl@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs