$ 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 (&) { }