Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
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 examining the Monastery: (5)
As of 2014-08-02 05:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Who would be the most fun to work for?















    Results (54 votes), past polls