The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

##############################################################################
#
# An example of writing an Excel file to a Perl scalar using Spreadsheet::
# WriteExcel and the new features of perl 5.8.
#
# For an examples of how to write to a scalar in versions prior to perl 5.8
# see the filehandle.pl program and IO:Scalar.
#
# reverse('©'), September 2004, John McNamara, jmcnamara@cpan.org
#

use strict;
use Spreadsheet::WriteExcel;

require 5.008;


# Use perl 5.8's feature of using a scalar as a filehandle.
my   $fh;
my   $str = '';
open $fh, '>', \$str or die "Failed to open filehandle: $!";


# Or replace the previous three lines with this:
# open my $fh, '>', \my $str or die "Failed to open filehandle: $!";


# Spreadsheet::WriteExce accepts filehandle as well as file names.
my $workbook  = Spreadsheet::WriteExcel->new($fh);
my $worksheet = $workbook->add_worksheet();

$worksheet->write(0, 0,  "Hi Excel!");

$workbook->close();


# The Excel file in now in $str. Remember to binmode() the output
# filehandle before printing it.
binmode STDOUT;
print $str;


__END__