in reply to Internal error from Perl

I'm not at a machine with a recent perl, so I haven't even tried to reproduce this. I'm just theorizing and kibbitzing from the side.

If you load module with the 'use' statement, some symbols may be imported into your current package's namespace. The 'package' statement changes your current package AT THAT POSITION. Your current code, if viewed as a single stream, reads like this:

package main; use utf8; use charnames ':full'; use utf8; use charnames ':full'; package Foo; { ... code using utf8 ... } package main; { ... code not using utf8 ... }
In modules, you should START with your package name, then bring in any other modules you want to use in defining that package's implementation.
package Foo; use utf8; ... 1;

--
[ e d @ h a l l e y . c c ]