Syntaxfehler beim unerwarteten Wort
fux
- perl
0 hotti0 Edgar Ehritt0 CPAN
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
hi,
Hat jemand eine Erklärung für die Fehlermeldung ?
@Dateien = readdir(VERZ);
^ liest auch ..ein
Guck Dir mal das Array @Dateien an.
Hotti
Hallo Fux,
xxx@linux-xxxx:~/Dokumente/geekhero/test> ./geek-font.pl
./geek-font.pl: Zeile 3: Syntaxfehler beim unerwarteten WortVERZ,' ./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
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.