fux: Syntaxfehler beim unerwarteten Wort

Hallo,

Ich habe ein kleines Skript welches mir unverständlicherweise folgende Fehlermeldung ausgibt:

xxx@linux-xxxx:~/Dokumente/geekhero/test> ./geek-font.pl
./geek-font.pl: Zeile 3: Syntaxfehler beim unerwarteten Wort VERZ,' ./geek-font.pl: Zeile 3: opendir (VERZ, "./");'

Das Skript schaut so aus:

  
#/usr/bin/perl -w  
  
opendir (VERZ, "./");  
@Dateien = readdir(VERZ);  
closedir(VERZ);  
  
# Ersetzen  
foreach $comic (@Dateien)  
{  
 if (index($comic,".svg")>=0)  
 {  
  open (DAT, "<$comic");  
  @file = <DAT>;  
  close(DAT);  
  
  open (COMIC, ">$comic");  
  foreach $line (@file)  
  {  
   $line =~ s/Bitstream Vera Sans/WebLetterer Pro BB, Normal/gi;  
   print COMIC $line;  
  }  
  close(COMIC);  
 }  
}  

Hat jemand eine Erklärung für die Fehlermeldung ?
Danke

  1. hi,

    Hat jemand eine Erklärung für die Fehlermeldung ?

    @Dateien = readdir(VERZ);
               ^ liest auch ..ein

    Guck Dir mal das Array @Dateien an.

    Hotti

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  2. Hallo Fux,

    xxx@linux-xxxx:~/Dokumente/geekhero/test> ./geek-font.pl
    ./geek-font.pl: Zeile 3: Syntaxfehler beim unerwarteten Wort VERZ,' ./geek-font.pl: Zeile 3: opendir (VERZ, "./");'

    frage an Dich: Wer löst diese Fehlermeldung aus?

    [ ] Perl
      [ ] shell

    #/usr/bin/perl -w

    So sieht eine Shebang aus? ;)

    #!/usr/bin/perl -w

    Gruß aus Berlin!
    eddi

  3. Dein eigentliches Problem ist dank Edgar Ehritt schon gelöst. Lasse mich die Gelegenheit nutzen, etwas anderes anzusprechen.

    Dein Programm ist typisches Babyperl, Version ca. 5.005 von 1998. Da kannst du mal sehen, wie veraltet dein Lehrmaterial war...

    Aber Babyperl ist okay - jeder nach seiner Fähigkeit. Mündig würde ich es so schreiben:

    $ perl -0777 -i.bak -pe's{Bitstream \s+ Vera \s+ Sans}{WebLetterer Pro BB, Normal}gimsx' meinecomics/*.svg

    Die Erläuterung findest du in perlrun. Normalerweise kommen Attribute wie "Bitstream Vera Sans" in XML nicht in zwei Zeilen umgebrochen vor, aber man kann ja nie wissen. Jedenfalls funktioniert es - für eine generalisierte Lösung brauchst du allerdings einen XML-Parser.