in reply to How does strict determine if something is legally declared?

I believe what happens is that strict does a compile-time check to make sure the typeglob slot for that name and that type in the current package contains a valid reference (after checking that there's no in-scope my variable of that name). Here's a snippet from Exporter/Heavy.pm in Perl 5.8.6 that seems to do the meat of the work:
*{"${callpkg}::$sym"} = $type eq '&' ? \&{"${pkg}::$sym"} : $type eq '$' ? \${"${pkg}::$sym"} : $type eq '@' ? \@{"${pkg}::$sym"} : $type eq '%' ? \%{"${pkg}::$sym"} : $type eq '*' ? *{"${pkg}::$sym"} : do { require Carp; Carp::croak("Can't export symbol: $type +$sym") };
Shouldn't require XS AFAICT.