use constant CONFIG_ITEMS => [ qw( server database user password logdir basedir inputdir inputextension cleanupdays countyid unzipdir sleeptime unzipdir mail_host support_addr ar_court_text ar_court_ori debug_print delete_txt_file from_email_address to_email_address send_email init_version ] ); my %config; foreach my $item ( CONFIG_ITEMS ) { my $value = $cfg->param($item); help($item) unless defined $value and length $value; $config{$item} = $value; } sub help { die "Parameter $_[0] wasn't set in config file."; } #### use constant CONFIG_ITEMS => { server => sub { my $param = shift; ...some Boolean test }, database => sub { ... }, user => ... }; #### use constant CONFIG_ITEMS => { server => qr/some pattern/, database => qr/some pattern/, ... }; #### foreach my $item( keys %{CONFIG_ITEMS} ) { my $value = $cfg->param($item); help() unless CONFIG_ITEMS->{$item}->($value); $config{$item} = $value; }