Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re: Altering regular expression trees

by ryan (Pilgrim)
on Jul 30, 2003 at 03:20 UTC ( #279066=note: print w/replies, xml ) Need Help??

in reply to Re: Altering regular expression trees
in thread Altering regular expression trees

You could try trapping the output using IPC::Open3. I do this for various deparse things, something like this will get the data for you. There is obviously neater ways to handle the data coming in, but for this example it works.
use strict; use IPC::Open3; + + my $debug = open3(\*WRITE, \*READ, \*ERROR, "perl -Mre=debug -e 'qr/.. +./'"); #old incorrect stuff :) #while (<READ>||<ERROR>) { # my (@read, @error) = (<READ>, <ERROR>); # print "READ: @read\n"; # print "ERROR: @error\n"; #} print <ERROR>; close(\*WRITE, \*READ, \*ERROR);
If doing the above is 'naughty' in any way please tell me, I have no idea of the plethora of caveats it possibly entails :)

UPDATE: Thanks diotalevi, I overlooked that. If you take out the while loop and just simply print <ERROR>; it will show what it is meant to for the intended purpose, I had other uses on my mind at the time, one of which was obviously to stuff it up :) Have ammended code as such.

Replies are listed 'Best First'.
Re: Re: Altering regular expression trees
by diotalevi (Canon) on Jul 30, 2003 at 07:46 UTC

    I've never used IPC::OpenFoo before and can't comment. What I do notice is that in your while() loop you call readline() on either *READ alone or also *ERROR and then follow up by slurping th rest of each into the @read array, @error will always be empty. Fix the code and you've probably got something there.

    my @read = <READ>; my @error = <ERROR>; close READ; close WRITE; close ERROR;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://279066]
[1nickt]: Good morning Monks and Monkettes!
[1nickt]: I have encountered a small code snippet I can not decipher: if ($?) { my $status = $? >> 8; ... }
[1nickt]: Hm, found the doc
[hippo]: >> is the bitwise shift, essentially divides the result by 256.
[haukex]: $? and system - the exit code of a process is stored in the upper bits of $?, so >> 8 does a bit shift to get at it
[hippo]: (truncating)
[erix]: aah, yes haukex++
[hippo]: Re: DBD::Sqlite queries slow - and gives wrong results has 6 upvotes. Is everyone quite well?
[erix]: hippo I think the 26 downvotes sick
[erix]: eh, 29 downvotes

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (8)
As of 2017-12-13 11:34 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (359 votes). Check out past polls.