my $regex = qr[ \A (.+?) \t # zwischen Anfang und erstem TAB => $key (\d+) # $prefix (?: # Klammern nicht behalten \( # ( (.+?) # Inhalt zwischen Klammern => $extension \) # ) )? # nur falls vorhanden ]x; while (my $line = ) { my ($key, $prefix, $extension) = $line =~ /$regex/; # usw.