Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^2: Common Perl Pitfalls

by chrestomanci (Priest)
on Apr 11, 2012 at 12:59 UTC ( #964534=note: print w/ replies, xml ) Need Help??


in reply to Re: Common Perl Pitfalls
in thread Common Perl Pitfalls

Rather than mess around with $INPUT_RECORD_SEPARATOR (AKA: $/), and restore it afterwards, a better method would be to use the File::Slurp module.

It is another common Perl pitfall to write new code for a common problem when you should have looked on CPAN. There is a very good chance that you will find a fully debugged implementation that considers all the edge cases. It never ceases to amaze me that people would prefer to spend half a day writing and debugging code, instead of 15 minutes finding and installing a module from CPAN.


Comment on Re^2: Common Perl Pitfalls
Replies are listed 'Best First'.
Re^3: Common Perl Pitfalls
by JavaFan (Canon) on Apr 11, 2012 at 14:23 UTC
    It always amazes me people prefer downloading a CPAN module, and using it, over writing a one-liner. I'm even more amazed that people think that just because there's a module on CPAN, it automatically is fully debugged and covers all the edge cases.

    I do wonder though, if it takes half a day to write:

    my $slurp = do {local $/; <HANDLE>};
    how long do you need to type in:
    use Some::Module::From::CPAN; my $slurp = Some::Module::From::CPAN->some_API(some_argument);
    Twice the number of lines, so, a full work day?
      use File::Slurp; my $text = read_file( 'filename' );

      Yeah, that's a whole day's work.
      I submit that finding the documentation on such a method is substantially easier than finding the documentation (for lack of a better word) for the snippet you gave.

      Note.
      The "cost" of useing the module is amortized over all the calls you make to any of its methods (of which File::Slurp has several useful ones).

      And the cost of downloading a module is amortized over all of the times you ever use it (at least on that machine).

        Yeah, that's a whole day's work.
        Maybe not for you or me. But for someone who needs half a day to type
        my $test = do {local $/; <HANDLE>};
        it could easily be.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2015-07-28 04:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (252 votes), past polls