in reply to ignoring blank lines
Not totally sure what you are after, but your code doesn't compare and isn't well laid out - see perlcritic and perlstyle. As a beginner (or anyone else) you should always use warnings and strict. You may also find diagnostics helpful - it will give you fuller explanations of warnings and their possible origin.
Making a few guesses as to what you wanted (two identical elements per line?) I came up with the following:
use warnings; use strict; use Data::Dumper qw/Dumper/; # very useful for debugging ++$|; my @array = (<DATA>); # check input print "INPUT :\n" . Dumper \@array; foreach my $line (@array){ chomp $line; # remove trailing newline # ignore empty lines next unless (defined$line && $line ne ''); # split on space my @t = split /\s+/, $line; # accept lines with two, identical elements if ( scalar @t == 2 && $t[0] eq $t[1] ){ print "MATCH : $line\n"; } else { print "NO : $line\n"; } } # gives - #INPUT : #$VAR1 = [ # 'file #', # ' #', # 'ass ass #', # ' #', # 'array #', # ' #', # 'rat rasa #', # ' #', # 'arrow ant #', # ' #', # 'sad' # ]; #NO : file #MATCH : ass ass #NO : array #NO : rat rasa #NO : arrow ant #NO : sad __DATA__ file ass ass array rat rasa arrow ant sad
There are shorter ways to do this using lookaheads and regular expressions but it is usually best to stick with something clear! HTH.
|
|---|