*p2::func = $func;
package p2;
our $x = 100;
func();
####
*p2::func = \$func;
package p2;
our $x = 100;
$func->();
####
#!/usr/bin/perl
use warnings;
use strict;
package p1;
our $x = 1;
my $func = sub { print $_[0],"\n" };
$func->($x);
*p2::func = $func;
package p2;
our $x = 100;
func($x);
####
#!/usr/bin/perl
use warnings;
use strict;
package p1;
our $x = 1;
my $func = sub {
my $pkg = (caller)[0];
no strict 'refs';
print ${"${pkg}::x"},"\n"
};
$func->();
*p2::func = $func;
package p2;
our $x = 100;
func();