zilore mumba <> wrote:
> Excuse me for the missing attachments. As I composed the mail in
> gmail which is not recognised on the mailing list. The attachments
> are now included.  

The main problem with your code, in addition to Jusin's point about file
handle naming, is with the line:

    my @rain = <OUT>; 

which reads the rest of the file into the array @rain, which is clearly
not what you intend.

The following seems to do what you are asking about.

-------------------------------------------------
use strict;
use warnings;

# You might want to initialise the file names from the command line.
my $in_fn = "sample.txt";
my $out_fn = "sample_tr.txt";

# The preferred open is the 3 arg method with a localised file handle.
open my $infd, "<", $in_fn or die "open $in_fn failed: $!\n";
open my $outfd, ">", $out_fn or die "open $out_fn failed: $!\n";

# Copy first 7 lines unchanged.
print $outfd scalar(<$infd>) for 1..7;

# Reformat the numbers on each remaining line.
while (<$infd>) {
    my ($year, $month, @rain) = split;
    $_ = sprintf "%.02f", $_ foreach @rain;
    print $outfd "\t$year $month\t", join("\t", @rain), "\n";
}

# Close files. Don't forget that closing an output file can fail.
close $infd;
close $outfd or die "close $out_fn failed: $!\n";
-------------------------------------------------------

HTH

-- 
Brian Raven 
 
Please consider the environment before printing this e-mail.

This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient or have received this e-mail in error, please advise 
the sender immediately by reply e-mail and delete this message and any 
attachments without retaining a copy.

Any unauthorised copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.
_______________________________________________
ActivePerl mailing list
ActivePerl@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to