Yes and no. Format depends on fixed width fonts (ie Courier New and friends) to line up the stuff. Here is a table in fixed width font
fixed | width | format
------+-------+-------
foo | bar | baz
And here is the same thing in variable width font (completely naff):
fixed | width | format
------+-------+-------
foo | bar | baz
If you can tolerate that you would just stick the output of format into a scalar and then insert it with a fixed width font type into Word and it will all look fine. format is a legacy item and painful to use. To capture its output you need a filehandle. I would just use sprintf which can do anything format can.
my $tmpfile = 'c:/tmp/tmp.txt';
$str = 'widget';
$cost = 10;
format Something =
Item: @<<<<<<<<@>>>>>
$str, '$' . sprintf("%.2f",$cost)
.
# format is a pain in the ass and won't write to an IO::Handle so we
# need to go through these contortions
open TMP, "+>$tmpfile" or die $!;
select(TMP); # need to select our file as the output handle for w
+rite
$~ = 'Something'; # now select our format
write TMP; # now write it
seek TMP, 0, 0; # up to the top of the file to read it
select(STDOUT); # reinstate STDOUT as our ouput handle
@data = <TMP>; # read in our formatted data
close TMP; # clean up
unlink $tmpfile;
print @data; # wohoo
To 'format' variable width fonts you need tables or perhaps columns at a pinch. Either use Word ones or Excel. Making a formatted table in Excel and then inserting this as an object into Word is much better documented than manipulating tables in Word so will be easier to do.
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|