Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: =~ matches non-existent symbols

by Athanasius (Archbishop)
on Nov 16, 2014 at 07:46 UTC ( [id://1107335]=note: print w/replies, xml ) Need Help??


in reply to =~ matches non-existent symbols

This line:

if ( <INPUT_FILE> =~ m/[^actgACTG]/ ) {

calls <> (i.e., readline) only once (in scalar context), therefore only the first line of the file is read in and tested. To test the whole file, you need a loop. For example (untested):

my $ok = 1; while (<INPUT_FILE>) { chomp; if (/[^actg]/i) { print "File contains something besides actg sequence.\n"; $ok = 0; last; } } print "good!\n" if $ok;

And yes, the chomp is necessary, otherwise each line (except perhaps the last) will contain a newline character and so fail the regex test.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: =~ matches non-existent symbols
by Anonymous Monk on Nov 16, 2014 at 16:58 UTC
    Hi! Yeah, I'm not using any loops because the files that I have to check consist of long single lines. Thanks anyway! Do you know what causes my code to match files that contain only actg?
      It doesn't just contain actg; it also contains a newline. You need to chomp your input.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1107335]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2024-04-20 02:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found