$ perl -le" ro sham bo " Can't locate object method "ro" via package "sham" (perhaps you forgot to load "sham"?) at -e line 1. #### $ perl -MO=Deparse -e " sub foo (&) {}; foo sub{;;} || 7 " Type of arg 1 to main::foo must be block or sub {} (not null operation) at -e line 1, at EOF -e had compilation errors. sub foo (&) { } &foo(sub { } || 7); $ perl -MO=Deparse -e " sub foo (&) {}; foo sub{;;} // 7 " Type of arg 1 to main::foo must be block or sub {} (not null operation) at -e line 1, at EOF -e had compilation errors. sub foo (&) { } &foo(sub { } // 7); #### $ perl -MO=Deparse -e " sub foo (&) {}; foo {;;} // 7 " Number found where operator expected at -e line 1, near "// 7" (Missing operator before 7?) Too many arguments for main::foo at -e line 1, near "// 7" syntax error at -e line 1, near "// 7" -e had compilation errors. sub foo (&) { } $ perl -e " // 1 " Number found where operator expected at -e line 1, near "// 1" (Missing operator before 1?) syntax error at -e line 1, near "// 1" Execution of -e aborted due to compilation errors. $ perl -le " sub foo (&) {}; foo sub{;;} +// 7 " Number found where operator expected at -e line 1, near "// 7" (Missing operator before 7?) Type of arg 1 to main::foo must be block or sub {} (not addition (+)) at -e line 1, near "// 7" syntax error at -e line 1, near "// 7" Execution of -e aborted due to compilation errors. $ perl -le " sub foo (&) {}; foo sub{;;} +//, 7 " Type of arg 1 to main::foo must be block or sub {} (not addition (+)) at -e line 1, at EOF Too many arguments for main::foo at -e line 1, at EOF Execution of -e aborted due to compilation errors. $ perl -le " sub foo (&) {}; foo sub{;;} ,//, 7 " Too many arguments for main::foo at -e line 1, at EOF Execution of -e aborted due to compilation errors. #### $ perl -le " sub foo (&) {shift->()}; print 1, do{foo {rand}} // 7 " 10.762115478515625 $ perl -le " sub foo (&) {shift->()}; print 1, do{foo {}} // 7 " 17