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"; }