in reply to Error Message when I use Strict

You are using a symbolic reference to a subroutine. That means that your reference is simply a variable containing the name of the sub, rather than a hard reference to the compiled code itself.

The strict module always objects to soft references. You can recast your code to provide hard references, use a string as a key to a hash of code references (a dispatch table), or you can say no strict 'refs'; within a suitable small scope.

After Compline,
Zaxo