package a; BEGIN { use Data::Dumper; print STDERR 'a:',Dumper \%INC; } use b; my $a = { foo => &b::bar () }; 1; #### package b; BEGIN { use Data::Dumper; print STDERR 'b:',Dumper \%INC; } use c; sub bar { 1; } 1; #### package c; BEGIN { use Data::Dumper; print STDERR 'c:',Dumper \%INC; } use a; 1; #### Undefined subroutine &b::bar called at a.pm line 7. Compilation failed in require at c.pm line 6. BEGIN failed--compilation aborted at c.pm line 6. Compilation failed in require at b.pm line 6. BEGIN failed--compilation aborted at b.pm line 6. Compilation failed in require at a.pm line 6. BEGIN failed--compilation aborted at a.pm line 6.