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