Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: Naming file handles with variables?

by GrandFather (Cardinal)
on May 01, 2009 at 05:19 UTC ( #761217=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Naming file handles with variables?
in thread Naming file handles with variables?

I don't thinks so. open $fileHandles[@fileHandles], ... 'creates' a new array element for the new file handle. You could instead:

open my $newFileHandle, ...; push @fileHandles, $newFileHandle;

to achieve the same effect.

If fileHandles were a hash instead of an array then keying by the file name would be appropriate however.


True laziness is hard work


Comment on Re^3: Naming file handles with variables?
Select or Download Code
Re^4: Naming file handles with variables?
by QM (Vicar) on May 01, 2009 at 14:09 UTC
    OIC. Scalar context giving the next index. Hadn't seen this before, but it's interesting.

    I don't think I would use this myself, as I don't know who would be maintaining my code. I'd prefer the alternative you gave for transparency. Doubly preferred, given the OP's apparent sophistication level.

    -QM
    --
    Quantum Mechanics: The dreams stuff is made of

      I agree with you. I probably should have used the less esoteric version given the OP's demonstrated level of expertise. However, you now know a new technique, so maybe pushing the edge of the envelope a little was the right thing after all. ;)


      True laziness is hard work

        Interesting technique. Are there any advantages to $foo[@foo] = 'var' over push @foo, 'var'

        ?

        Anyone foolish enough to change the starting index of their arrays with "$[" will find that $foo[@foo] = 'var' breaks. But then they deserve what they get. However, push and map will function even in the dire weirdness imposed by defining arrays to start at index 23.

        For completeness sake, here's the map implementation, even though you know perfectly well how to do it.

        my @fileHandles = map { open my $fh, '<', $_ or die "Can't open $filename $!"; $fh; } @fileNames;

        Update: fixed dumb typos, thanks to GrandFather.


        TGI says moo

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (12)
As of 2014-04-17 00:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (437 votes), past polls