sub CheckFile { my $filename = shift; ... } sub CheckHost { my $host = shift; ... } sub CheckDB { my $db = shift; ... } ... my %checkList = ( DbName => \&CheckDB, configFile => \&CheckFile, iniFile => \&CheckFile, remoteHOST => \&CheckHost ); while (my($key,$value) = each %checkList) { &$value($key) or die "Check $key failed"; }