Just to remind myself: The backslash in open($fh, '>', \$variable) allows the filehandle to be opened to an "in memory" file held in a scalar. See open.
Update:
Here is my working example:
#!/usr/bin/perl
use strict;
use warnings;
use English qw( -no_match_vars );
use Getopt::Long;
my $in_memory;
GetOptions('in_memory|i' => \$in_memory,
);
my $greeting = "Hello World!";
format BLAH =
Greeting: @<<<<<<<<<<<<<<<<
$greeting
.
my $fh;
my $message;
if (defined($in_memory)) {
open $fh, '>', \$message or die "Couldn't open for writing: $!";
} else {
$fh = *STDOUT;
}
select($fh);
$FORMAT_NAME = 'BLAH';
write();
select(STDOUT);
if (defined($in_memory)) {
print "Message written to in memory variable:\n";
print "$message";
close($fh);
}
loris