http://www.perlmonks.org?node_id=964534


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.

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.