my @zeilen_lexikon = split ("\n", $lexikon); my $token; my $tag; my $lemma; my %hash; foreach my $zeile (@zeilen_lexikon) { # Die Leerzeichen zwischen Worttypen und Tags normalisieren: $zeile =~ s/\s+/ /g; # Worttyp, Tag und Lemma voneinander trennen: if ($zeile =~ /([A-ZÄÖÜa-zäöüß0-9,;.:!?"'\(\)\[\]\{\}\-]+)\s([A-Z]+(\.[A-Za-z0-9\-\*]+){1,6})\s([A-ZÄÖÜa-zäöüß0-9,;.:!?"'\(\)\[\]\{\}\-]+)/) { $token = $1; $tag = $2; $lemma =$4; # Ich zähle die verschiedenen Kombinationen aus Worttyp und Tag: $hash{lc($token)}->{$tag}++; } } # Ausgabe foreach my $token (sort keys %hash) { foreach my $tag (sort {${$hash{$token}}{$b} <=> ${$hash{$token}}{$a}} keys %{$hash{$token}}) { print $hash{$token} . "\t\t" . $tag . "\t\t" . $hash{$token}->{$tag} . "\n"; } }