in reply to Prevent Strings From Being Interpreted As A File Handle

The simple solution is to stop calling a subroutine as a method and just use: Input::awesome;.

Or, if awesome really is a method, then invoke it via a reference blessed into the class 'Input':

$o = bless [], 'Input';; ... $o->awesome;; Yay!

Or, as you've pointed out, use lexicals.

Bottom line: stop going out of your way to artificially create problems.

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.