#!/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();