Offer Kaye wrote:
> Hi,

Hello,

> Can anyone tell me if it is possible to define 2 different formats for
> the same filehandle?
> 
> The reason I am asking is that I want to print 2 different tables to
> the same text file and I don't want to use printf statements. For me
> at least, code that uses printf to print something as complex as a
> text table is hard to both write and read, hard to understand and hard
> to debug. It's also ugly, to boot :)
> 
> My current workaround is to close the file, reopen in append mode with a
> different filehandle name and define the second format with this name.
> Ugly, but works. Any other/better solutions?

After reading perlform (perldoc perlform) I came up with this:


#!/usr/bin/perl
use warnings;
use strict;

sub _print_format1 {
    # output table 1, with 3 columns
    $^A = '';
    formline <<'FORMAT', @_;
@<<<<<<<<<<<<<< @>>>>>>>>>>>          @<<<<<<<<<<<<<<<<<<<<<<<<<
FORMAT
    $^A;
    }

sub _print_format2 {
    # output table 2, with 6 columns
    $^A = '';
    formline <<'FORMAT', @_;
@<<<<<<<<<<<< @>>>>>>>>>>>>>  @>>>>>>>>> @>>>>>>>>>>>>> @>>>>>>>>>>>>>
@>>>>>>>>>>>>>>>
FORMAT
    $^A;
    }

my $outfile = 'file_with_tables.txt';

open OUT, '>', $outfile or die "Couldn't open $outfile for writing: $!\n";

print OUT "Table 1:\n",
          _print_format1( 1, 15, 'foo' ),
          _print_format1( 2,  8, 'bar' ),
          "\nTable 2:\n",
          _print_format2( 'clk1', 0.04, 12000, 0.51, 0.39, 0.25 ),
          _print_format2( 'clk2', 0.13, 27000, 0.8,  0.5,  0.1  );

close OUT or die "Couldn't close $outfile after writing: $!\n";

__END__



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to