Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

writing formatted output to file

by pugsly62 (Novice)
on Feb 17, 2005 at 21:53 UTC ( #432115=perlquestion: print w/ replies, xml ) Need Help??
pugsly62 has asked for the wisdom of the Perl Monks concerning the following question:

I have my program output formatted using the 'format' function. However, when I try to write the output to a file I'm not getting the formatted output (with header) written to the file, just one line of data. When I run it using 'STDOUT' it looks fine on screen. I'm sure I'm missing something simple because I am new to perl. Help! -Scott
my $records = 'scott.d3'; my $FhIn; my $yr_01; my $yr_02; my $yr_03; my $yr_04; my $timestamp = localtime(time()); open $FhIn, '<', $records or die "Could not open $records: $!"; while( my $line = <$FhIn> ) { my ( $county, $year_x, $yr_tot ) = split ' ', $line; if ( $year_x eq "1" ) { $yr_01 = $yr_tot; } elsif ( $year_x eq "2" ) { $yr_02 = $yr_tot; } elsif ( $year_x eq "3" ) { $yr_03 = $yr_tot; } elsif ( $year_x eq "4" ) { $yr_04 = $yr_tot; format STDOUT_TOP = COMPANY NAME More Text Here @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $timestamp COUNTY 2001 2002 2003 2004 ------ ------ ------ ------ ------ . format STDOUT = @<<<<<<<<<<<@<<<<<<<<<<@<<<<<<<<<<@<<<<<<<<<<@<<<<<<<<<< $county $yr_01 $yr_02 $yr_03 $yr_04 open(FILE,">report.txt") or die "Can not open file"; select FILE; $~ = STDOUT; $^ = STDOUT_TOP; write; } } close(FILE); close $FhIn or die $!;

2005-02-17 Janitored by Arunbear - added code tags, as per Monastery guidelines

Comment on writing formatted output to file
Download Code
Re: writing formatted output to file
by artist (Parson) on Feb 17, 2005 at 22:22 UTC
    Consider moving the line open(FILE,">report.txt") or die "Can not open file"; before while loop. When you place it inside the loop, it overwrites every time what you have written previously.
      Thanks! That took care of my problem. Scott
Re: writing formatted output to file
by trammell (Priest) on Feb 17, 2005 at 22:39 UTC
    Perhaps the quickest solution is to just redirect STDOUT to file when you're running the script, eg.:
    % perl myscript.pl > report.txt
Re: writing formatted output to file
by hsinclai (Deacon) on Feb 18, 2005 at 01:29 UTC
    In the directive
    format STDOUT =
    are you missing the ending period required by format() ?

      Yes, I was, thank you. It was in there before but I guess I deleted it in error the last time I saved the script. Anyway, I was able to get the desired output by opening my output file outside of my loop. Thanks Scott

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://432115]
Approved by Arunbear
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (10)
As of 2014-08-20 17:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (121 votes), past polls