I would like to match multi-word string items (stored in an array) as regexes in a text file, multiple times. I'd also like to create a hash with the matched items as keys and the number of occurrences as their values (ideally sorted by the values). Here is what I have so far:
Read in text file where items are to be matched:
open(FILE, "<file.txt") or die "cannot open file for reading: $!";
local $/ = undef;
my $inputfile = <FILE>;
close FILE;
Loop through multi-word array, convert each item into a regex, then match regex in $inputfile
and create hash of occurrences:
foreach my $mwe (@mwelist) {
my $mweregex = quotemeta($mwe);
foreach ($inputfile =~ /($mweregex)/g) {
#print STDOUT "$1\n\n";
$mweinputfile{$mwe}++;
}
}
@mwelist
is an array containing string items, each of two words or more.
Right now the code is not working - if I uncomment the print command, it just gives me empty lines (just empty lines, no spaces) in the shell.
Thankful for any pointers/corrections/suggestions,
Here is an example line of input data (file.txt in the above):
Sehr geehrter Herr Geißler, meine sehr geehrten Damen und Herren nicht nur hier im Saal sondern auch an den Bildschirmen! Wir möchte gern die Diskussion über die Schnellfahrstrecke Wendlingen-Ulm – und Herr Geißler, um auch da für Klarheit zu sorgen: Wenn wir von Neubaustrecke oder Schnellfahrstrecke reden, meinen wir dasselbe – diese Diskussion möchte ich mit einem Überblick beginnen, der Sie darüber informiert, warum wir diese Schnellfahrstrecke vorsehen, was der verkehrliche Vorteil und der verkehrliche Nutzen ist, und darüber hinaus natürlich soll ein Überblick gegeben werden, warum sie genau so geplant und ausgeführt wird, wie sie hier dargestellt ist.
And here are a few examples from @mwelist
:
...
in gewissem Sinne
in gewissen Fällen
gewiß nicht
das weiß ich ganz gewiß
...
@mwelist
– Zaid