in reply to codeopen(INPUT, "<INPUT") gives INPUT opened only for output
a) yes I was able to get it to work with a double dup to save STDOUT (see b below) however I don't understand why I cannot recover STDOUT by one of:
open(STDOUT, '>-'); open(STDOUT, '>&=1');
b)The folloing is similar to what you posted with some updates *but* if you run it with -w -Mstrict you get: Name "main::SAVE" used only once: possible typo
use POSIX; local $/ = undef; my $chldoutput; my $TRAP = POSIX::tmpnam(); print "Gonna use $TRAP\n"; open(SAVE1, ">&STDOUT"); open(SAVE2, ">&STDERR"); close(STDOUT); open(STDERR, ">$TRAP"); open(STDOUT, ">>$TRAP") || die("$!: $TRAP"); #+> didn't work eval "print STDERR 'Scary... ';print 'Waka waka!'"; close(STDOUT); close(STDERR); open(STDOUT, ">&SAVE1"); open(STDERR, ">&SAVE2"); open(INPUT, $TRAP) || die("$!: $TRAP"); $chldoutput = <INPUT>; print "ABC: $chldoutput\n"; unlink($TRAP);
-- perl -p -e "s/(?:\w);(<A HREF="/index.pl?node=st&lastnode_id=3333">st< +/A>)/'\$1/mg"
|
|---|