Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

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

by Anonymous Monk
on Sep 05, 2003 at 08:07 UTC ( #289128=note: print w/ replies, xml ) Need Help??


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

Isn't it simpler by doing...

-f "file.txt" or die "File not found!\n"; $string=`cat file.txt`;

This is also true for the external 'sort', which is much faster than perl's own sort.

Roger.


Comment on Re: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
Download Code
Re: Re: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
by esh (Pilgrim) on Sep 05, 2003 at 08:11 UTC

    You are assuming that the current operating system has the "cat" command, and has it in the current $PATH (or whatever Windows uses).

    It also costs a fork/exec which seems very costly to me compared to opening and slurping in a file.

    It may be fewer characters to type, but it probably gets terrible performance (where that's a concern) and is not portable (where that's a concern).

    I distinctly remember some package having a simple file slurp method which makes this even simpler, but I don't remember if it was specific to an Apache related module or if it could be used in any environment. Not too hard to write one if you do this often, though.

    Oh, yeah, just because a file exists (-f) doesn't mean that it is readable. You might want to change the code to use -r to decrease the risk that the cat command will fail.

    On the topic of "sort", I have been known to recommend running the external command instead of doing a sort inside of Perl. It mainly depends on how large the data set is and how complex the sorting criteria.

    -- Eric Hammond

Re^2: Perl Idioms Explained - my $string = do { local $/; <FILEHANDLE> };
by adrianh (Chancellor) on Sep 05, 2003 at 12:58 UTC

    Unless you're not on a unix box of course :-)

    You also have to be careful that nasty characters don't get into that filename.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2014-07-12 22:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (241 votes), past polls