my @val = (\val_input,\val_input,\val_input,\val_input,\val_number,\val_date,\val_number,\val_filter); for my $i ( 0 .. $#list) { $code = $val[$i]; #which subroutine to call? ($sql{ $list[$i] }, $error) = $self->$code( $mand[$i], $self->query->param($list[$i] )); if ( $error-> { msg } ) { push @errors, ucfirst($list[$i])." $error->{ msg }" } }