in reply to Re: Changing the STDOUT Font for word
in thread Changing the STDOUT Font for word

tachyon,
Do you know if it's possible to use Perl's format in conjunction with Word?

Thanks for the code...it is a big help!

  • Comment on Re: Re: Changing the STDOUT Font for word

Replies are listed 'Best First'.
Re: Re: Re: Changing the STDOUT Font for word
by tachyon (Chancellor) on Apr 04, 2003 at 00:25 UTC

    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