in reply to Re^2: strangeness with prototypes and 'logical defined or'?
in thread strangeness with prototypes and 'logical defined or'?

So you can see there is no indirect object notation
Well, syntactically print STDOUT "whatever", new Foo "whatever" and grep {;} "whatever" look pretty similar to me. I know only one name for it - "indirect object slot" - it's used for different purposes, yeah, but Perl is full of this kind of overloaded grammar so... Anyway, as far as I can tell foo {;} // 7 is parsed like grep {;} m// 7.
$ perl -MO=Deparse -e 'sub foo(&) {;} foo {;} //' Too many arguments for main::foo at -e line 1, at EOF -e had compilation errors. sub foo (&) { } &foo(sub { } , //); $ perl -MO=Deparse -e 'sub foo(&) {;} foo {;} 1, 2, 3' Too many arguments for main::foo at -e line 1, at EOF -e had compilation errors. sub foo (&) { } &foo(sub { } , 1, 2, 3); $ perl -MO=Deparse -e 'sub foo(&) {;} foo {;} 1 2' Number found where operator expected at -e line 1, near "1 2" (Missing operator before 2?) Too many arguments for main::foo at -e line 1, near "1 2" syntax error at -e line 1, near "1 2" -e had compilation errors. sub foo (&) { }
Its anonymous sub, match operator, and a seven, and these three scalars/expressions need to be separated by operators, like comma, plus minus ...
Well, no comma is necessary between the "indirect object slot" (or whatever it's called) and the next argument. Only 7 needs a preceding comma.

Replies are listed 'Best First'.
Re^4: strangeness with prototypes and 'logical defined or'?
by Anonymous Monk on May 26, 2015 at 00:44 UTC

    Well, no comma is necessary between the "indirect object slot" (or whatever it's called) and the next argument. Only 7 needs a preceding comma.

    Good point, only one comma is required for this well formed nonsense :) its still nonsense though