Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: redirect stream from wirte; to $string

by ELISHEVA (Prior)
on Jan 31, 2011 at 05:54 UTC ( [id://885200]=note: print w/replies, xml ) Need Help??


in reply to redirect stream from wirte; to $string

My eyes always miss this in the documentation, but starting in Perl 8.8 or thereabouts you can make a string into a file handle and then select it as the default file handle for write:

#make string into file handle my $sBuf=''; open(my $fhOut, '>', \$sBuf); #\$sBuf is a reference to $sBuf # make it your output stream for format/write select $fhOut; my ($sName, $iAge); format SomeFormat = Test: @<<<<<<<<<<<< @>>>>> $sName, int($iAge) . $sName = "MickeyMouse"; $iAge = 82; #born Nov, 1928 $~ = 'SomeFormat'; write; print "buffer is: <$sBuf>\n";

If you have perl 5.8.8 installed the documentation only shows up in open and not in perlopentut. In the Perl 5.12.2 documentation, there is a FAQ question devoted to this.

Alternatively, you can also try to follow the advice here to roll your own swrite() function.

Update: added sample code using string buffer file handle with format and write

Update: added the 5's, as per DrHyde below.

Replies are listed 'Best First'.
Re^2: redirect stream from wirte; to $string
by DrHyde (Prior) on Jan 31, 2011 at 10:54 UTC

    You do of course mean perl *5*.8.8 and *5*.12.2.

    There's also IO::Scalar and IO::String on the CPAN.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (2)
As of 2024-04-16 14:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found