in reply to Internal error from Perl

The problem also goes away if you don't use Foo:
use utf8; use charnames ':full'; # don't use Foo; print "Hello world \N{EURO SIGN} \n"; # no error message
Meanwhile, when using Foo, and using charnames in both main and Foo, you do get the message, but it is just a warning, and the "\N{...}" construct really does work in both name spaces:
use utf8; use charnames ':full'; use Foo; print "Hello world \N{EURO SIGN} $Foo::LN \n"; # "unreferenced scalar" message shows up, but so do both # intended characters (assuming you have the right font...)
Anyway, I'd agree that this merits a bug report.