in reply to Re: array element return syntax
in thread array element return syntax

H:\scripts\7d>perl -e "print ((localtime(time))[2])" 16
=D Excellent thankyou. Could I be cheeky and ask just how print ((localtime(time))[2]) works at each step as regards each context

From :

time

To :

print ((localtime(time))[2])?

Replies are listed 'Best First'.
Re^3: array element return syntax
by duff (Parson) on Mar 29, 2006 at 16:16 UTC
    1. time returns a number that represents the number of seconds since the start of the epoch.
    2. localtime(time) returns a list of values that represent the seconds, minutes, etc. in the local time zone
    3. (localtime(time))[2] indexes into the list (a convenience that perl allows) and returns the 3rd item in the list
    4. print((localtime(time))[2]) outputs the 3rd item in the list returned by localtime

    The only "weird" part might be why there are extra parens on the print. I.e., why not

    print (localtime(time))[2];
    And the answer is precedence. To perl, that looks like a function call (to the print function) with a parameter of localtime(time). So it's really
    print(...)[2];
    Which doesn't make any sense, so perl tells you so.