Hi Bill,
Thanks for the reply and the link, I get it now. Although one more question, should (@columns-3) maybe be ($columns-3)?
Also, I'm a bit confused over the fact that the following pieces of code produce different output files. Can you take a look at the scripts and let me know where the problem is, as I can't understand it?
#/bin/perl/
use strict;
use warnings;
open my $input, '<', './2kc29-out.txt' or die $!;
open my $output, '>', 'test_thu1.txt' or die $!;
while (my $line = <$input>) {
chomp $line;
$line =~ s/^\s+//;
next if 1 .. $line =~ /\@TYPE xy/; #perlop range operators
my @columns = split(/\s+/, $line);
my $format = "%8.3f" . "%10.3f"x(@columns-3) . "\n";
printf $output $format, @columns[2..$#columns];
}
and the second one:
#/bin/perl/
use strict;
use warnings;
open my $input, '<', './2kc29-out.txt' or die $!;
open my $output, '>', 'test_thu2.txt' or die $!;
while (my $line = <$input>) {
chomp $line;
$line =~ s/^\s+//;
next if 1 .. $line =~ /\@TYPE xy/; #perlop range operators
my @columns = split /\s+/, $line;
my $col1 = shift@columns; # column 1 (ignore)
my $col2 = shift@columns; # column 2 (ignore)
my $col3 = shift@columns; # column 3 (keep)
my $result = printf $output ("%8.3f",$col3); # column 3 format
# loop over remaining columns
for my $c (@columns) {
my $data = printf $output ("%10.3f",$c);
$result .= " $data"; # append $result
}
printf $output "$result\n";
}
The second script, prints a slightly bigger file (37.51MB over 31,28MB) because in the output it has printed dozens of random "1" numbers right after the last column. Why is this happening? |