package SimpleExample; sub method_foo { my $self = shift; # ... bla bla bla ... my $arg = 42; my $intermediate_result = helper_function($arg); # ... bla bla bla ... } # ... sub helper_function { my ($arg) = @_; # ... bla bla bla ... } #### sub list_tests { my $class = ref($_[0]) || $_[0]; my @tests; no strict 'refs'; if (defined(@{"$class\::TESTS"})) { push @tests, @{"$class\::TESTS"}; } else { push @tests, grep { /^test/ && $class->can($_) } keys %{"$class\::"}; } push @tests, map {$_->can('list_tests') ? $_->list_tests : ()} @{"$class\::ISA"}; my %tests = map {$_ => ''} @tests if @tests; return keys %tests; }