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.
In reply to Re: redirect stream from wirte; to $string
by ELISHEVA
in thread redirect stream from wirte; to $string
by michal.d
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |