Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re^4: Find overlap

by Kenosis (Priest)
on Oct 14, 2012 at 07:53 UTC ( #998927=note: print w/replies, xml ) Need Help??

in reply to Re^3: Find overlap
in thread Find overlap

Your solution is an excellent use of a HoH! Here are a few items to consider within your foreach:

foreach (@ARGV) { open my $fh, '<', $_ or die $!; while ( my $line = <$fh> ) { next unless my @p = $line =~ /^(chr.+?)\t+(\d+)\t+(\d+)/; $minmax{ $p[0] }{min} //= $p[1]; $minmax{ $p[0] }{max} //= $p[2]; if ( $p[1] < $minmax{ $p[0] }{min} ) { $minmax{ $p[0] }{min} = $p[1]; } if ( $p[2] > $minmax{ $p[0] }{max} ) { $minmax{ $p[0] }{max} = $p[2]; } } close $fh; }
  • A three-argument open is used
  • A lexically-scoped variable is used for the file handle
  • or die $! checks for open errors
  • The regex line:
    • Skips possible comment and track definition lines in the BED files
    • And then makes using chomp and split unnecessary
  • Uses defined-or-equals (//=) to replace the !exists

Hope this is helpful.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998927]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2017-12-16 03:55 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (448 votes). Check out past polls.