http://qs321.pair.com?node_id=11113025


in reply to Re: Find element in array
in thread Find element in array

Addendum: $. aka $INPUT_LINE_NUMBER will also give the current line number when reading from a file handle.

Update

use strict; use warnings; while (my $sequence = <DATA>) { chomp $sequence; if ($sequence =~ /[^ATCG]/){ warn "Sequence '$sequence' in line $. has invalid character af +ter " . $-[0]; } else { print "Valid sequence: '$sequence'\n"; } } __DATA__ TAAGAACAATAAGAACAA TAAGAACAATAAUAACAA TAAGAACAATAAGAACAA

Sequence 'TAAGAACAATAAUAACAA' in line 2 has invalid character after 12 at parse_dna.pl line 7, <DATA> line 2.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^3: Find element in array
by tobyink (Canon) on Feb 17, 2020 at 13:58 UTC

    Take a look at that warning message:

    Sequence 'TAAGAACAATAAUAACAA' in line 2 has invalid character after 12 + at parse_dna.pl line 7, <DATA> line 2. ^^^^^^ + ^^^^^^

    The warn function already includes $. in its output, unless your message ends in "\n".

      > The warn function already includes $.

      I've been aware of this, but how can we know if the OP will use warn for logging or doesn't prefer to push the line-numbers in an array?

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

Re^3: Find element in array
by Sofie (Acolyte) on Feb 16, 2020 at 14:56 UTC
    I still can't get this to work. I am obviously missing something. So what I want to do is: Use an input DNA sequence and put in array. For each element in array check if the element is a nucleotide. If not a nucleotide print "not a valid character at position xx". In the end, print out the number of characters that were valid and the number of characters that were not valid, calculate the percentage of non-valid characters. Does this make sense? Thanks
      > I still can't get this to work. I am obviously missing something. So what I want to do is: Use an input DNA sequence and put in array. For each element in array check if the element is a nucleotide. If not a nucleotide print "not a valid character at position xx".

      you got everything for this, does it work?

      > In the end, print out the number of characters that were valid and the number of characters that were not valid, calculate the percentage of non-valid characters.

      That's a new question, you should learn step by step.

      > Does this make sense?

      Well people answered two very different questions in this thread. You could do better.

      Please post your code so far, and try to be clearer what you want.

      Most of us here are reluctant to write speculative code if the questions are fuzzy and leave room to various interpretations.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery