http://qs321.pair.com?node_id=287819


in reply to Re: Re: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
in thread Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };

But why get a module and a function just for this two expression idiom?

I guess the main reason would be that it would be fairly self-evident, even to a Perl newbie, what File::Slurp does and how to use it. I think the first time someone comes across the code in the OP (and perhaps the second and third times as well), they will find it a bit mystifying. Remembering how to use it in their own code could also be a bit difficult.

That's not to say that there's an overwhelming reason to use File::Slurp, just that it could certainly be justified for reasons of code clarity.

Disclaimer: I've never used File::Slurp. I'm assuming that it doesn't suck. :-)

Wally Hartshorn

(Plug: Visit JavaJunkies, PerlMonks for Java)

  • Comment on Re: Re: Re: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };

Replies are listed 'Best First'.
Re: Re: Re: Re: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
by benn (Vicar) on Aug 30, 2003 at 10:34 UTC
    Disclaimer: I've never used File::Slurp. I'm assuming that it doesn't suck. :-)

    I have - it doesn't :). It also includes "write_file()", "append_file()" and "read_dir()", making it often one of the first modules I use when starting with a 'blank canvas'.

    Cheers, Ben.

Re: Re: Re: Re: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
by John M. Dlugosz (Monsignor) on Sep 02, 2003 at 20:33 UTC
    I tried File::Slurp once, and found that it didn't take an argument for opening the file in binary mode. So I couldn't use it in the spot I planned it for! I included my own slurp function, called something like read_whole_file, in the program that did what I needed. This gives the benifit of it being more readable than the idiom, the ability to change it in once place only (after all, if they forgot binmode what else might go wrong some day?), and no hassle of installing a module.