#!/usr/bin/perl -w use strict; my %lists = ( 'test1' => "stuff", 'test2' => "things", 'test3' => "whatever" ); for my $i (keys %lists) { my $sub = UNIVERSAL::can(__PACKAGE__,$i) || sub { warn "Couldn't call $i" }; &$sub; } sub test1 { print "New message for test1\n"; } sub test2 { print "New message for test2\n"; } __END__ New message for test1 Couldn't call test3 at - line 13. New message for test2