package A; use strict; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( build_funcs ); sub build_funcs { foreach ('A', 'B', 'C') { eval " print \"building $_ func\\n\"; sub ${_}_func { print \"$_ func called\\n\"; } "; push @EXPORT, "${_}func"; } } 1; #### use strict; use lib '.'; use A; &build_funcs; &A_func;