http://qs321.pair.com?node_id=649178

bdimych has asked for the wisdom of the Perl Monks concerning the following question:

I do not want "use y" into z.pm
~>cat x.pl use y; use z; z_sub(); ~>cat y.pm package y; sub global_sub { print "global_sub working!" } 1 ~>cat z.pm package z; use Exporter 'import'; our @EXPORT = qw(z_sub); sub z_sub { global_sub(); } 1 ~>perl x.pl Undefined subroutine &z::global_sub called at z.pm line 5.
I think, simplest way is to declare global_sub with some blank dummy namespace:
~>cat x.pl use y; use z; z_sub(); ~>cat y.pm package y; sub G::global_sub { print "global_sub working!" } 1 ~>cat z.pm package z; use Exporter 'import'; our @EXPORT = qw(z_sub); sub z_sub { G::global_sub(); } 1 ~> perl x.pl global_sub working!
but I just do not like "G::"! Please help