Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^5: create image via binmode

by strat (Canon)
on Jan 15, 2006 at 10:21 UTC ( [id://523318]=note: print w/replies, xml ) Need Help??


in reply to Re^4: create image via binmode
in thread create image via binmode

It's similar, but there are some differences (which may or may not be important):

  1. the local $/ has a very tight scope which may be important if you read additional files and don't want to get them in slurp mode.
  2. no global filehandles.
  3. a minimum of error handling
  4. filenames hardcoded only once

well, you can also get point 1 with an ordinary block, e.g.

my ($content, $IN); unless (open ($IN, "<", $file)) { die "Error in reading '$file': $!\n"; } # unless else { local $/ = undef; # valid only until end of block binmode($IN); $content = <$IN>; close ($IN); } # else
or the like.

Global filehandles have a problem: they are global, and if you open(IN, ...) and another IN is already opened, the first IN is closed. In some cases (e.g. recursions, reading filenames out of a file and opening them in a subroutine) this may be fatal.

point 4 is in my eyes important that it is not good to write something like:

unless (open ($IN, "<", "file1.txt")) { die "Error in reading 'file1.txt': $!\n"; } # unless
because if the filename changes to something different, there is the danger you forget to change the filename in the die-message (or just do a stupid typo) and you or somebody else searches for the wrong problem

Best regards,
perl -e "s>>*F>e=>y)\*martinF)stronat)=>print,print v8.8.8.32.11.32"

Replies are listed 'Best First'.
Re^6: create image via binmode
by ikegami (Patriarch) on Jan 15, 2006 at 17:59 UTC

    I agree with everything, and follow those practices myself. I just stopped reading after I read what I thought was the point of your post. ++'ed.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2024-04-19 08:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found