in reply to difficulty in matching 2 fields of a same line

You can use array slice like so:

my @line; while(<DATA>){ chomp; push @line,split; } print @line[2,10]; #print 3,11 __DATA__ 4829:71370 1:N:0:CGATGT + chr6 126912761 GAAGGCATAGCCCGTTGGGCTGTGGTCAT +CAGCCTC CCCFFFFFHGHHHJHIJJJHIJIGHCGIIJJJJIJI 0 4829:71370 2:N:0:CGATGT + chr7 89349071 AGCCCTGCCCCCACCCCCCATTCTTCTTGACTGTCT C@@F +FFFFHHHGHJ JIJIJIIIIJJJJJJJJIIJIJ 0

However, it really depend on what you really want to print out.

Replies are listed 'Best First'.
Re^2: difficulty in matching 2 fields of a same line
by Anonymous Monk on Jun 27, 2012 at 18:09 UTC

    example
    14975:50417    1:N:0:CGATGT    -    chr11    108607098    GCTAGCTTACAGGTCACCTTGCTTGGTGTGGACAGT    JJIIJJJGGGIJHHHFJJJIJJJHHHHHFFFFFCCC    0    33:A>T,34:G>C    14975:50417    2:N:0:CGATGT    +    chr11    89267281    TCATGAAGTATAAAGTTACAGGGTGGTGATGTGATT    CCCFFFFFBHHHFIJIIIIIIIJAFH<FFHIGIIIJ    0
    my code shud not be printing this line because here both fields are equal
    but it does because there are sm extra tabs.

    how do i tell it to compare only those fields starting with chr?

      Let a regex find what you need
      my @cmp = $line[$i] =~ /\tchr([0-9]+)\t/g; if (2 == @cmp and $cmp[0] != $cmp[1]) { print $line[$i]; }

        hey thanks for that u guys are really amazing!