in reply to Re^2: Loop, but print once.
in thread Loop, but print once.
1 300 1_a 30 1_b 20 1 300 2_a 22 2_b 12 1 320 1_a 10 1_b 30 1 320 2_a 32 2_b 22 2 320 1_a 31 1_b 20 2 320 2_a 21 2_b 12
It gives
2 - 1_a 31 1_b 20
where I'd expect
2 - 320 1_a 31 1_b 20
Also, there's usually a desire to only omit repeated header fields, yet your solution can omit any number of fields, even all of them.
Fix:
use strict; use warnings; my $PRINTF = '%3s %3s %s %s %s %s'; my $HEADERS = 2; my @prev_cells; while (<DATA>) { # Input data. my @cells = split /\t/, $_; # Format the data for printing. $cells[0] .= ' -'; # Remove redundant headers. my @display_cells = @cells; if (@prev_cells) { for (@display_cells[ 0 .. $HEADERS-1 ]) { last if $_ ne shift @prev_cells; $_ = ''; } } @prev_cells = @cells; # Output data. printf $PRINTF, @display_cells; } __DATA__ 1 300 1_a 30 1_b 20 1 300 2_a 22 2_b 12 1 320 1_a 10 1_b 30 1 320 2_a 32 2_b 22 2 320 1_a 31 1_b 20 2 320 2_a 21 2_b 12 2 320 2_a 33 2_b 44
1 - 300 1_a 30 1_b 20 2_a 22 2_b 12 320 1_a 10 1_b 30 2_a 32 2_b 22 2 - 320 1_a 31 1_b 20 2_a 21 2_b 12 2_a 33 2_b 44
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Loop, but print once.
by Narveson (Chaplain) on Mar 07, 2008 at 06:24 UTC | |
by ikegami (Patriarch) on Mar 07, 2008 at 06:47 UTC |