[quote=elvira,14.06.2006, 11:53]ich habe es folgenderweise probiert, aber hat nicht funktioniert:
[/quote]
"hat nicht funktioniert" ist eine etwas vage Aussage.
Was hat nicht funktioniert? Wie lautete die Fehlermeldung bzw. was ist passiert?
So wie es aussieht, benutzt du auch kein "use strict" und "use warnings". Das sei dir wirklich ans Herz gelegt, um Fehler zu finden! (s.
Wissensbasis.UseStrict)
Quote
my $directory="/Perl/BugFiles";
opendir(RDIR, $directory) or die "das Verzeichnis konnte nicht geöffnet werden";
my @fileList= grep(!/^\.?$/, readdir(RDIR));
Cargo Cult Copying? Dein grep entfernt Verzeichniseinträge, die entweder "." lauten oder leer sind (was gar nicht vorkommen kann). Normalerweise entfernt man "." und "..", d.h.
my @fileList= grep(!/^\.\.?$/, readdir(RDIR));
Quote
close(RDIR);
foreach $file(@fileList) {
open (WRITEFILE, ">/Perl/ExtractedData/data.txt");
open(READFILE, "</Perl/BugFiles/$file");
Hier fehlen die Fehlerabfragen für die beiden open():
open (WRITEFILE, '>', '/Perl/ExtractedData/data.txt')
or die "could not open /Perl/ExtractedData/data.txt: $!";
[und analog weiter]
Quote
while (my $row=<READFILE>) {
if($row=~/<TITLE>(.+)-$/){
my $bugnumber=$1;
}
[... etc ...]
- Die Regexp kommt mir ein wenig komisch vor, aber ich kenne den Aufbau dieser Bugreport-Dateien ja nicht. Endet die Titelzeile wirklich mit einem '-'?
- Wenn du die Variablen innerhalb des if-Blocks deklarierst, sind sie auch nur da sichtbar. Sie sollten wohl eher vor dem
while() deklariert sein.
Quote
my @zeile=($bugnumber, $sender, $maintainer, $date, $package, $severity);
print WRITEFILE $zeile;
}
Dazu haben renee und esskar ja schon geschrieben.
@zeile und
$zeile sind zwei verschiedene Variablen, das erste ein Array und das zweite ein Skalar.
Dann wäre meine Bitte noch, dass du dir einen anderen Stil angewöhnst, Blöcke zu beenden und einzurücken. Momentan sieht es so aus, als ob die print-Anweisung noch innerhalb der while-Schleife liegt. Siehe dazu auch
perlstyle und die eine oder andere Diskussion hier im Forum. ;)