Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

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)

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];

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.


      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?

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2018-07-17 05:25 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (355 votes). Check out past polls.