Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Accessing Arrays and Lists

by demerphq (Chancellor)
on Jun 27, 2002 at 18:35 UTC ( #177807=note: print w/replies, xml ) Need Help??


in reply to Accessing Arrays and Lists

Welcome to the pain that prototypes can bring... ;-)
that would be a different pia that is encountered with print occasionally, thanks to danger for the heads up

Your problem here is that

print (stat($file))[8];
looks to perl just like
print( stat($file) ) [8];
its treating the outer pair of parenthesis as the parenthesis for the print function call, and not as get the stat results in list context and only use the 9th element

This will work just fine in either of the following ways (and proabably a few more)

print((stat($file))[8]);
or even better (er IMO)
print "".(stat($file))[8];
or also (since stat returns a number)
print 0+(stat($file))[8];
and as danger points out below the best would probably be
print +(stat($file))[8];
HTH

Updated Node

Yves / DeMerphq
---
Writing a good benchmark isnt as easy as it might look.

Replies are listed 'Best First'.
Re: Re: Accessing Arrays and Lists
by danger (Priest) on Jun 27, 2002 at 18:50 UTC

    Just to clarify. Parens immediately after a function are taken as delimiters for the argument list (as you rightly explained) --- but that has nothing to do with Perl's prototypes:

    sub foo { # no prototype here return ('a','b','c'); } # print (foo)[0]; # same error print +(foo)[0];

    I also show the unary + op as a better generalization of your last example --- it disambiguates without imposing numeric context.

      DOH.

      Of course you're right.

      I was thinking of the situation where the prototyping of print (which is the prototyping I meant, not the prototyping of stat) where it treats a function call as a filehandle. I know I've been nailed by that one before. (Although annoyingly i cant think of an example at the minute. Anybody knows of one please post it for the record)

      Oh and thanks, I had forgotten the + trick.

      Yves / DeMerphq
      ---
      Writing a good benchmark isnt as easy as it might look.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://177807]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (10)
As of 2017-10-22 21:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My fridge is mostly full of:

















    Results (275 votes). Check out past polls.

    Notices?