Heres the basic situation. I have a function call. When I run it, it prints stuff to stdout. I wish to have this in a variable instead. Here is the code that prints to stdout:
use Perl;
my $p = Perl->new( ARGV => [ "-le", "print 'hello world'"] );
$p->run;
In case you are unfamiliar with the module in question, it is Perl.pm in the bundle named "PerlInterp-0.03" on cpan.
Yes, in case you are curious, I have tried reopening stdout to a scalar reference, using io::capture::stdout, tying stdout, etc. No luck so far.
Update:
In case anyone cares, none of the solutions presented actually work. (Except for possibly the first one that Anonymous Monk suggested, as I can't get
open FOO,"-|"; to do anything useful on win32)
Update2: The reason none of these solutions work, is Perl.pm gets it's own filedescriptors from the kernel (or something like that), so all the perl magic you want to do doesn't affect the file descriptors Perl.pm eventually gets.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.