package ThisIsMyPackge; package Foo; package A our @ISA = qw{Foo}; sub validate { do something; } package B our @ISA = qw{Foo}; sub validate { do something; } package C our @ISA = qw{Foo}; sub validate { do something; } package Bar; package D our @ISA = qw{Bar} sub apply { do something; } package E our @ISA = qw{Bar} sub apply { do something; } package F our @ISA = qw{Bar} sub apply { do something; } #### package ThisIsMyPackge; use A; use B; use C; use D; use E; use F; use 79 more times ... ..... #### foreach my $bar (@{$objects}) { my $foo = $bar->object; .... next unless $foo->validate; $bar->apply; .... }