print (1,2)[0]; #### (print(1,2))[0]; #### print((1,2))[0]; #### $ perl -we'print (1,2)[0];' 2>&1 |splain print (...) interpreted as function at -e line 1 (#1) (W syntax) You've run afoul of the rule that says that any list operator followed by parentheses turns into a function, with all the list operators arguments found inside the parentheses. See perlop/Terms and List Operators (Leftward). ...