Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re: Running a string through a filter program and recieving the output as a string

by ioannis (Abbot)
on Sep 30, 2005 at 06:03 UTC ( [id://496340]=note: print w/replies, xml ) Need Help??


in reply to Running a string through a filter program and recieving the output as a string

You can always use open2 if you want a bidirectional pipe. This program pipes the command to tr(1) to get back a modified command:
use IPC::Open2; open2 ( REA, WRI, 'tr a-z A-Z' ) or die $!; for (<DATA>){ print {\*WRI} [(my $cmd, my @rest) = split]->[0]; } close WRI; print <REA>; __END__ an apple a day boat for bloat
  • Comment on Re: Running a string through a filter program and recieving the output as a string
  • Download Code

Replies are listed 'Best First'.
Re^2: Running a string through a filter program and recieving the output as a string
by Moron (Curate) on Oct 20, 2005 at 14:57 UTC
    Although when using SystemV (Sunos 5.9) today, I had a complaint about a defunct process being left even after closing both the read and write channels - this being in a subroutine that handled repeated communications with a time-series database language interpreter. At some point there was one defunct process for each time I had called the subroutine. To fix this, I had to modify the code to specifically tell the parent to wait. It seems silly that I should have to do that, but on the other hand it is indeed partially documented in perlipc. Here is what I had to do to fix it, but applied to the above piece of code instead of mine:
    use IPC::Open2; use POSIX ":sys_wait_h"; my $pid = open2 ( REA, WRI, 'tr a-z A-Z' ) or die $!; for (<DATA>){ print {\*WRI} [(my $cmd, my @rest) = split]->[0]; } close WRI; print <REA>; close REA; # but believe it or not, under sysV the zombie is still the +re! waitpid($pid,0); # this will finally kill it cleanly! __END__ # although exit from the program will eventually kill it of co +urse an apple a day boat for bloat

    -M

    Free your mind

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://496340]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2024-04-19 22:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found