PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl: Kommentare werden nicht ignoriert?!



jean_luc_picard
15-05-2004, 22:40
Hallo Leute,

ich bin hier gerade am abperlen ;). Irgendwiebin ich etwas irritiert, anscheinend gibt es Probleme mit meinen Kommentaren im Code. Perl hat teilweise darauf hingewiesen, dass Variablen bereits reserviert wurden. Die Position, die Perl angemeckert hat, war aber ein Kommentar :confused:. Wie kann das sein? Meine Kommentare beginnen, wie üblich, mit einem "#".
Gibt es bei Kommentaren in Perl irgendwas besonderes zu beachten?

Gruß, Picard

CYP
16-05-2004, 10:29
eigentlich nicht

poste doch mal den code

jean_luc_picard
16-05-2004, 11:20
... naja, das sind einige hundert Zeilen. Ich habe die Kommentare erstmal herausgenommen. Ist natürlich nicht so schön, in zwei Wochen habe ich u.U. schon Probleme das noch nachzuvollziehen ;).

jean_luc_picard
19-05-2004, 09:55
Hallo,

da mein Skript nun schon sehr umfangreich geworden ist, bin ich nun wieder bei gegangen, den code zu kommentieren. Und was passiert? Mein Perl-Skript streikt. Ich konnte nun eine Stelle isolieren, bei der das Problem auftritt.



# function to read the module files
sub readmods
{
# directory, where to find the modules
my $hidefimods="$hidefiroot/etc/hidefi/modules/";
# store filenames in this directory to an array
my @files=`ls -1 $hidefimods`;
# process all files
foreach $file (@files)
{
# remove spaces, i don't really know why this is needed, but it is...
$file=~s/\s+//g;
# variable to store the whole module (we'll proceed as already done with the configuration file)
my $wholemod="";
# open module file
open(MOD,"<$hidefimods/$file") || die "Cant read $hidefimods/$file\n";
# store its lines to an array
my @modlines=<MOD>;
foreach my $modline (@modlines)
{
# if this line contains characters and begins not with an
if ($modline =~ /\w/ && $modline !~ /^\s*#/)
{


Die funktion geht noch viel weiter... das lasse ich mal weg. Tatsache ist, das die so eingeleitete Funktion nicht läuft. Ich bekomme die Mitteilung, das es sich um ein falsche switch-Statement handelt. switch benutze ich das letzte Mal etwa 250 Zeilen, vor der, die in der Fehlerangabe gemeldet wird :confused:, also auch in einer anderen Subroutine.
Entferne ich die Kommentare auf dem Bereich, funktioniert alles...

... das kann doch nicht angehen!

CYP
20-05-2004, 17:44
die zeilen scheinen in ordnung zu sein

ich glaube aber das du das # hier maskieren musst
/^\s*#/ -> /^\s*\#/

es kann eigentlich fast nur ein schreibfehler irgendwo weiter oben sein
rufst du denn die subroutine in deiner switch anweisung auf ?

jean_luc_picard
21-05-2004, 00:18
Nein, die switch-Anweisung war in einer anderen sub-Routine. Die haben sich auch nicht gegenseitig aufgerufen. Ich habe es einfach nicht gecheckt und bin bald verrückt geworden. Wenn man nicht davon ausgehen könnte, dass das Switch Modul in Ordnung ist, würde ich behaupten, dass das Ding ne Macke hat. Ich habe es dann jedenfalls rausgeschmissen und nur noch mit "elsif" gearbeitet. Seitdem habe ich diese Probleme nicht mehr und Programmierfehler sind recht schnell ausfindig gemacht...
Escaping der # hatte ich auch probiert... hatte nichts genützt...

... jedenfalls stehe ich mit dem Switch Modul erstmal auf Kriegsfuß ;) ...

Gruß, Picard