my %testar = ( 'reg1' => { 'exp' => qr~\Q/var/logs/logger/\E(\d*)/(\d*)~, 'desc' => 2, }, 'req2' => { 'exp' => qr~...~, 'desc' => 1, }, ); # entweder ueber ein explizites array: my @fields = $string =~ $testar{req1}->{exp}; my $wantedField = @fields[ $testar{req1}->{desc} - 1 ]; # oder kuerzer, ohne das explizite array my $wantedField = ( $string =~ $testar{req1}->{exp} )[ $testar{req1}->{desc} -1 ];