in reply to Removing duplicates lines
Because this is Perl, There is more than one way to do it. So although you already have two working propositions, I'll add another version with the next keyword. Combined with loop labels and statement modifiers (postfix if, while etc...) they help make code that looks like plain old English. And it avoid adding another level to a block hierarchy with a if block.
use strict; use warnings; my $previous = ''; LINE: while(my $line = <DATA>) { # next LINE unless length $line >= 11; ## useless if you're absolu +tely sure that you can't have a shorter line # next LINE unless $line =~ m<\S>; ## Checking if the line isn +'t blank, same as above my $var = substr($line, 9, 2); next LINE if $var eq $previous; # with eq or ne instead of == or ! += this works even for hexadecimal values, or any string of two charac +ters # At this point, lines with the same number as the previous have b +een skipped $previous = $var; print $line; } __DATA__ AB000000026JHAHKDFK AB000000028JHKHKHKJ AB00000003033AFSFAS AB000000030HJHKH80J AB000000030LOIKJUJ8 AB0000000324446KJHK
AB000000026JHAHKDFK AB000000028JHKHKHKJ AB00000003033AFSFAS AB0000000324446KJHK
|
|---|