Dingels+2008-11-29 23:17:11--[...]
[...]
while (my $dateien = readdir(INPUT)) {
$dateinamen .= $dateien . ' ';
}
[...]
my @dateinamen_liste = split(" ", $dateinamen);
[...]
[...]
Was soll das denn? Abgesehen davon, dass es schrecklich redundant und ineffizient ist, ist es auch noch fehleranfällig. Niemand zwingt Dich, Daten in einem String zu speichern, wenn Du eigentlich ein Array haben willst. Und wenn Du schon Dateinamen in einem String aneinanderhängst, was eigentlich niemals nötig sein sollte, dann ist das Leerzeichen kein gutes Trennzeichen, da es auch mal in einem Dateinamen vorkommen könnte
Also besser so:
my @dateinamen;
while(my $datei = readdir(INPUT)) {
push @dateinamen, $datei;
}
Quote
[...]
foreach my $dateiname (@dateinamen_liste) {
if (not -e "haeufigkeiten.txt") {
...
}
[...]
Hmm, davon, dass man dieselbe Abfrage mehrmals in einer Schleife durchführt, von deren Interationsvariablen sie völlig unabhängig ist, wird das Resultat nicht unbedingt besser. Und Du prüfst natürlich nicht, ob die Datei mit dem Namen
haeufigkeiten.txt in dem Verzeichnis vorhanden ist, in dem das Skript liegt, sondern ob sie im aktuellen Arbeitsverzeichnis vorhanden ist.
Die ganzen Iterationen in Deinem Skript erfüllen keinen erkennbaren Zweck!
Um aber auf das eigentliche Problem zurückzukommen: Du solltest erstmal das Verzeichnis bestimmen, in dem Dein Skript wohnt und dann auf die Existenz der Datei prüfen. Da ersteres tatsächlich nicht ganz trivial ist, nimmt man am besten das Standardmodul
FindBin dafür her:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use strict;
use warnings;
use FindBin;
use File::Spec::Functions;
my $haeufigkeiten = catfile($FindBin::Bin, 'haeufigkeiten.txt');
if (-e $haeufigkeiten) {
print "$haeufigkeiten gibt's schon\n"
}
else {
print "$haeufigkeiten haben wir hier nicht\n"
}
When C++ is your hammer, every problem looks like your thumb.