Because you've switched BOIN and BOOUT.
You need to write to BOOUT and read from BOIN--you were
doing the opposite. It should read:
#!/usr/bin/perl -w
use strict;
use IPC::Open2;
print open2(\*BOIN, \*BOOUT, "cat");
print BOOUT "proclist\n";
print BOOUT "quit\n";
close BOOUT;
while (<BOIN>) {
print;
}
close BOIN;
If you'd had warnings on in your original, you would
have received this warning:
Filehandle main::BOIN opened only for input at foo.pl line 8.
Filehandle main::BOIN opened only for input at foo.pl line 9.
By the way, as perlipc warns, watch out for Unix buffering.
In this case (using cat) you might want to use
the -u flag for unbuffered output. In your case, it doesn't
matter much, since you close the output filehandle. But
in general, it's something to think about.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|