in reply to How to convert a symbolic reference to a hard reference

Your eval "&$s" creates a call to the sub, not a reference to it. The return from the sub is the return value of the print (which is 1 because the print succeeded).

Try eval "\\&$s" instead, or avoid the eval altogether with *M:x = do{ no strict 'refs'; \&$s }

If you are downvoting this for other than lack of interest, thanks for sending me a message or reply to let me know why so I can do better (or just stay quiet) next time.