in reply to Re^3: column counter and printf question
in thread column counter and printf question
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?
and the second one:#/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]; }
#/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?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: column counter and printf question
by Athanasius (Archbishop) on Oct 29, 2015 at 12:53 UTC | |
by fasoli (Beadle) on Oct 29, 2015 at 14:45 UTC | |
|
Re^5: column counter and printf question
by GotToBTru (Prior) on Oct 29, 2015 at 14:45 UTC |