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. |