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?
In reply to Re^4: column counter and printf question
by fasoli
in thread column counter and printf question
by fasoli
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |