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;