bug oder bin ich einfach grad zu blöd dazu...?!

folgender code
Code:
#!/usr/bin/perl

use strict;
use warnings;
use English;
use Switch;

#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

sub getprocstatus ( $ ) {

  my $status = 'stopped';
  foreach( `ps -AF` ){
    switch( $_ ){
      case (/SCREEN/) {
        $status = 'running' if( $_ =~ /$_[0]/i );
      }
      case (/$0 $_[0] update/) {
        $status = 'updating'
      }
      case (/$0 $_[0] resetserver/) {
        $status = 'resetting'
      }
      #und so weiter und so fort...
    }
  }
  return $status;

}
ergibt folgende Fehlermeldung:
Code:
Did not find leading dereferencer, detected at offset 477syntax error at subs/INFO/getstatus_css.pl line 14, near "){"
syntax error at subs/INFO/getstatus_css.pl line 18, near "){"
syntax error at subs/INFO/getstatus_css.pl line 21, near "){"
Global symbol "$status" requires explicit package name at subs/INFO/getstatus_css.pl line 22.
Compilation failed in require at subs/INFO/func.pl line 82.

Der Code wird mittels "require" in ein anderes Perlscript eingebunden.
Wenn ich das Script direkt ausführe gibts keine Fehlermeldung...
 
Hinter 'updating' und 'resetting' gehört ein Semikolon soviel ich weiss. Ansonsten mal die Option '-w' beim Interpreteraufruf nutzen. Evtl. wird der Fehler damit eindeutiger.
 
beim letzen Befehl ist esegal ob ein Semicolon angefügt wird oder nicht
(auch mit gibts die gleiche Meldung)

die Option -w bewirkt das gleiche wie der Aufruf von "use warnings"

[ EDIT : ]
OK...
wenn ich ( $ ) bei der Vereinbarung der subroutine weglasse funktioniert alles...
"sub bla ( $ ) {}" bewitkt meines Wissens nach doch, dass die subroutine "bla" nur ein einziges skalares Argument akzeptiert, oder irre ich mich?

Inwiefern hängt das mit der Fehlermeldung zusammen?
 
Zurück
Oben