Hallo Tomek,
In Rücksprache mit Christian habe ich noch eine andere Möglichkeit, die vielleicht erwähnenstwert ist.
{
# Recordseparator "lokal" machen
local $/;
open (DATEI, $datei) die "Kann $datei nicht öffnen: $!";
# Datei in eine einzelne Variable lesen
$content = <DATEI>;
close DATEI;
# Anzahl von $word bestimmen
$num_of_word = $content =~ s/($word)/$1/g;
}
Das funktioniert, weil s/// die Anzahl der Ersetzungen zurückgibt. Hier wird das Gefundene durch sich Selbst ersetzt, wodurch den String nicht verändert wird.
Afaik sind Reguläre Ausdrücke (wenn sie nicht "fehlerhaft" sind) oft schneller, als häufige Schleifenaufrufe. Bei einer kleinen Datei ist es vielleicht noch egal, bei einer Datei mit vielen Worten in vielen Zeilen und vielen Treffern, macht es sich vielleicht doch ein wenig bemerkbar :-).
Gruß AlexBausW