Klaus Mock: Inhalt aus Verzeichnis in Datei schreiben

Beitrag lesen

Hallo,

Daraus ist das geworden:

#!/usr/bin/perl
use strict;

Du wießt, warum das hier steht?

open(OUTFILE, ">test.html") or
              die " Datei test.html  konnte nicht geoeffnet werden:
$!\n";
$ordnername = "/home/jan/ATF-HP";
opendir(DIR, $ordnername);
@eintraege = readdir(DIR);
foreach(@eintraege) {
        print OUTFILE $_;
}

Dir ist hoffentlich klar, daß da die Dateinamen (und nur die, also ohne dem Pfad) quasi in einer Wurst in der Datei landen. Aber Du willst wahrscheinlich irgendwann sowieso eine HTML-Formatierung einfügen, also nicht mehr weiter lamentiert

closedir(DIR);
close OUTFILE;#!/usr/bin/perl

Nun erhalte ich immer folgende Fehlermeldung:

Global symbol "$ordnername" requires explicit package name at ordner.pl line 8.
Global symbol "$ordnername" requires explicit package name at ordner.pl line 9.
Global symbol "@eintraege" requires explicit package name at ordner.pl line 10.
Global symbol "@eintraege" requires explicit package name at ordner.pl line 13.

Das hängt mit 'use strict;' zusammen. Du solltest, wenn Du diese Anweisung verwendest, auch gefälligst jede Variable deklarieren, also
my($ordnername) = '/home/wo/auch/immer';
my(@eintraege) = readdir(DIR);

usw. Das zauber wort heißt my. Jede Variable, die Du neu einführst, sollte mit 'my' deklariert werden [1]. Aber lass bitte nicht 'use strict' weg, obwohl das auch die Fehlermeldungen beseitigen würde. Gewöhn Dir lieber das ordentliche Deklarieren an. Mit ein wichtiger Grund ist, daß es auf Dauer leichter ist, Schreibfehler bei Variablennamen zu finden.

'Literaturhinweise':
perldoc -f my
perldoc -f our
perldoc perlmodlib

Grüße
  Klaus

[1] der Vollständigkeit halber sollte auch noch erwähnt werden daß es da auch noch 'our' gibt und auch 'use vars qw(.....)'