Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: Pattern Matching in Cygwin Perl vs. Win32 Perl

by CharlesClarkson (Curate)
on Aug 27, 2008 at 01:41 UTC ( [id://707036]=note: print w/replies, xml ) Need Help??


in reply to Re: Pattern Matching in Cygwin Perl vs. Win32 Perl
in thread Pattern Matching in Cygwin Perl vs. Win32 Perl

Also, leave the newline ending off the end of the die() statement. It supressses line number information. According to perlfunc, die:

If the last element of LIST does not end in a newline, the current script line number and input line number (if any) are also printed, and a newline is supplied.

Here is my favorite file opener. I have used it for a couple of years and used to routinely catch a lot of wierd errors due to my typing skills (or lack there of).

  • It doesn't suppress line number info,
  • It uses the three argument style for open,
  • It uses one of those cool quote-like operators (qq{}),
  • It uses the lower precedence or operator to avoid extra parentheses
  • It uses a scalar ($fh) instead of a glob (FH) to hold the file handle and allows me to avoid local when passing file handles,
  • It quotes the file name in the error message in case something wonky is going on with white space (or I screwed up the file name), and
  • It looks good in my editor's syntax highlighter. :)
open my $fh, '<', $filename or die qq{Cannot open "$filename": $!}; open my $fh, '>', $filename or die qq{Cannot open "$filename": $!}; open my $fh, '>>', $filename or die qq{Cannot open "$filename": $!};
HTH,
Charles

Replies are listed 'Best First'.
Re^3: Pattern Matching in Cygwin Perl vs. Win32 Perl
by ikegami (Patriarch) on Aug 27, 2008 at 04:14 UTC

    I disagree completely with your first point. If you need to know on what line an I/O error occured, something is horribly wrong with your error handling. Users must not have to dig into a program to find and address the cause of errors under their control (as opposed to a programming error).

    I agree with the other changes, but I didn't want to venture far from the topic until the OP's problem became known. How I write it:

    open(my $fh_log, '>>', $qfn_log) or die(qq{Cannot open log file "$qfn_log": $!\n});

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (3)
As of 2024-03-28 18:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found