in reply to Re^4: Switch.pm Failure ( CGI::Switch? )
in thread Switch.pm Failure

so Switch {} is trying to invoke method Switch with an argument (without parens) that is the result of a block, but the block "never ends?" due to the return. Is that it?

Interesting theory, and I did forget about Indirect Object Syntax. It's easy to test, but as it turns out it's unlikely this is what's going on here, due to the returns used everywhere in that code. We still need more information from OP.

sub Foo::new { bless {}, shift } sub Foo::Switch { print "Switch @_\n" } Main(); sub Main { Switch { "Foo" }; Switch { new Foo }; Switch { return }; # just returns } Switch { }; # this dies __END__ Switch Foo Switch Foo=HASH(0x24a5338) Can't call method "Switch" without a package or object reference at .. +.

Replies are listed 'Best First'.
Re^6: Switch.pm Failure ( CGI::Switch? )
by huck (Prior) on Apr 25, 2017 at 16:40 UTC

    The proof is at Re^31: global var. It all started with use Switch;, and the subroutine/returns were to get around the initial invalid use of the Switch method.