package Foo; my @_instances; sub new { ... push @_instances, $self; return $self; } sub zorbnitz { print "Weeble\n"; } sub for_All_Foos { my $class = shift; my $code = shift; $code->( $_ ) for @_instances; } package main; $a = Foo->new; $b = Foo->new; Foo->for_All_Foos( sub { $_[0]->zorbnitz } );