#!/usr/bin/perl -w use strict; package Foo; sub new { bless { "_foo", 1, "_bar", 1, "_qux", 1 } } sub runTests { my ($self) = @_; for my $symname (sort keys %{$self}) { local *sym = ref($self)."::$symname"; &sym if defined(&sym) and $symname =~ /^_.*/; } } # sub runTests sub _foo { print "_foo called\n" } sub _bar { print "_bar called\n" } package main; my $foo = Foo->new(); $foo->runTests(); #### sub runTests { my ($self) = @_; for my $symname (sort keys %$self) { next unless $symname =~ /^_/; $self->$symname() if $self->can($symname); } } #### sub runTests3 { my ($self) = @_; no strict 'refs'; for my $symname (sort keys %{ref($self).'::'}) { next unless $symname =~ /^_/; $self->$symname() if $self->can($symname); } }