Meine weiteren Kommentare:
Hallo,
möchte euch beiden danken!
Der ‚kanonische Ansatz‘ führte ebenfalls zu übersprungenen
Dateien.
Hmmm, wäre mir neu. In Perl 5.10 gibt es sogar
einen Test, der das ausschliesst:
[/perl-5.10.0/ext/File/Glob/t/basic.t]
…
look for the contents of the current directory
$ENV{PATH} = „/bin“;
delete @ENV{BASH_ENV, CDPATH, ENV, IFS};
@correct = ();
if (opendir(D, $^O eq „MacOS“ ? „:“ : „.“)) {
@correct = grep { !/^./ } sort readdir(D);
closedir D;
}
@a = File::Glob::glob("*", 0);
@a = sort @a;
if ("@a" ne „@correct“ || GLOB_ERROR) {
print "# |@a| ne |@correct|\nnot ";
}
print „ok 2\n“;
Die einfache Schleife
for my $csv (glob ‚*.csv‘) {
…
}
hat in 4 Durchgängen fehlerfrei funktioniert. Vielleicht
bleibt es ja dabei…
glob() benutzt ja intern auch C’s readdir(), sollte
nichts anderes herauskommen, wenn ja, dann liegt
vielleicht noch ein anderes Problem vor.
Stimmt! Auch bei der Schleife tauchte das Problem später auf.
Hätte vielleicht noch erwähnen sollen, dass das Verzeichnis
eine Freigabe von einem Windows 2000 Rechner ist. Dieser und
auch der Linux-Server sind virtuelle Maschinen (VMWare ESX).
Wenn das Problem bestehen bleibt, versuche ich die Arbeit in
einem temporären Ordner auf dem Linux-Server zu machen und die
Dateien nachher zu verschieben.
Welche Dateien werden denn ausgelassen? Ist das
Win-Verzeichnis ‚cifs‘ oder ‚smbfs‘ gemountet? Mit
welchen Optionen?
Es werden einige (eigentlich immer unter 10) csv-Dateien von mehreren Hundert ausgelassen. Ich kann keinen Unterschied zu den funktionierenden csv-Dateien feststellen. Schätze aber, dass es da doch irgendwas gibt…
Das Win-Verzeichnis ist als ‚smbfs‘ gemountet, als Optionen habe ich nur username, password, uid und gid an.
Grüße
CMБ
Mittlerweile habe ich aber eine für mich tragbare Lösung gefunden:
Ich hänge einfach eine zweite Schleife an, die checkt, ob zu jeder csv-Datei die Ausgabedateien schon existieren. Wenn nicht, wird halt dasselbe gemacht wie in der ersten Schleife. Bislang wurden die übersprungenen Dateien dann immer in der zweiten Schleife bearbeitet!
Auf jeden Fall vielen Dank für die Hilfe und viele Grüße,
Marc