Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Stuck in Perl.. Partial code, but it needs more improvement.. Any suggestions, please?

by Fletch (Bishop)
on May 27, 2021 at 13:01 UTC ( [id://11133127]=note: print w/replies, xml ) Need Help??


in reply to Stuck in Perl.. Partial code, but it needs more improvement.. Any suggestions, please?

Prossibly not useable (this has the stench of homework about it) but considering the problem domain BioPerl would be the first thing to check out. Even if it is homework you're supposed to build from scratch you may be able to gain inspiration, but judging by the orphaned method call on a $mySeq instance its use could be expected.

And mentioning because it jumped out at me: ALWAYS CHECK THE RETURN FROM open CALLS. You did your first but you didn't creating some of your output file(s) which means that's inevitably going to silently fail some time and you're then going to be stuck trying to track down what's gone wrong when that happens (and it will; Murphy sez so). Even your trick conditionally opening the last output it might be useful to print an informational diagnostic message to indicate why you're not writing to the file rather than STDOUT.

if( not $succ ) { print STDERR qq{Unable to append to '$file', using STDOUT: $!\n}; $fh = \*STDOUT; }

The cake is a lie.
The cake is a lie.
The cake is a lie.

  • Comment on Re: Stuck in Perl.. Partial code, but it needs more improvement.. Any suggestions, please?
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: Stuck in Perl.. Partial code, but it needs more improvement.. Any suggestions, please?
by perlfan (Vicar) on Jun 02, 2021 at 23:14 UTC
    > ALWAYS CHECK THE RETURN FROM open ...

    The typical idiom for this is,

    open (my $fh, $mode, $file) || die $!;

    This also mitigates the need for an -e check for read $mode that expect $file exist, particularly useful inside of an eval block or Try::Tiny construct; so that you can handle it.

    Update, fixed precedence. Point remains the same.

      Check your precedence. The code you showed does not do what you think.

      $ perl -Mstrict -wE 'say -e "fooble" ? 1 : 0; open my $fh, "<", "foobl +e" || die $!' 0
      $ perl -Mstrict -wE 'say -e "fooble" ? 1 : 0; open my $fh, "<", "foobl +e" or die $!' 0 No such file or directory at -e line 1.


      The way forward always starts with a minimal test.
        Thank you, fixed.

Log In?
Username:
Password:

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

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

    No recent polls found