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
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs