$sym = "${callpack}::$sym" unless $sym =~ /::/;
*$sym =
( $ch eq "\$" ? \$$sym
: $ch eq "\@" ? \@$sym
: $ch eq "\%" ? \%$sym
: $ch eq "\*" ? \*$sym
: $ch eq "\&" ? \&$sym
: do {
require Carp;
Carp::croak("'$_' is not a valid variable name");
});
####
perl -Mstrict -Wle 'BEGIN { *main::x = \$main::x; } $x = 42;'
####
Variable "$x" is not imported at -e line 1.
Global symbol "$x" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
####
perl -Mstrict -Wle 'BEGIN { package ARBITRARY_PACKAGE_NAME; *main::x = \$main::x; } $x = 42;'