You still haven't actually said what you are trying to do, but reading between the lines it seems you want to be able to run code to handle an entry in a hash passed to your code from some front end code dealing with fields (sounds a little like handling a web page to me). If that is the case then consider:
use strict;
use warnings;
my %dispatch = (
0 => \&HandleParam0,
1 => \&HandleParam1,
2 => \&HandleParam2,
3 => \&HandleParam3,
4 => \&HandleParam4,
5 => \&HandleParam5,
);
my %params = (
'default-0' => ['lakja', 'haljl', 'alka'],
'default-1' => 'abc',
'default-2' => [1, 54, 83, 23],
'default-5' => '2019-06-26 00:00:10',
);
for my $key (sort keys %params) {
next if $key !~ /^default-(\d+)/ || !exists $dispatch{$1};
$dispatch{$1}->($params{$key});
}
sub HandleParam0 {
my ($values) = @_;
print "default-0: @$values\n";
}
sub HandleParam1 {
my ($str) = @_;
print "default-1: $str\n";
}
sub HandleParam2 {
my ($values) = @_;
print "default-2: @$values\n";
}
sub HandleParam3 {
my ($values) = @_;
print "default-3: @$values\n";
}
sub HandleParam4 {
my ($str) = @_;
print "default-4: $str\n";
}
sub HandleParam5 {
my ($date) = @_;
print "default-5: $date\n";
}
Prints:
default-0: lakja haljl alka
default-1: abc
default-2: 1 54 83 23
default-5: 2019-06-26 00:00:10
Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond