SI: Exitcode

Hi zuammen

ich will in diesem Code:

open(DATEI, $pfad) or die "Fehler beim oeffnen der Datei: $!\n";

zusätzlich zu der Ausgabe im Fehlerfall "Fehler beim oeffnen der Datei: $!
\n" d
en Exitcode 5 zurückgeben. Die Syntax "exit 5;" kenn ich, doch ich weiss
in dem Fall nicht wohin damit ?

Danke
MfG
SI

  1. Hallo SI,

    ich will in diesem Code:

    open(DATEI, $pfad) or die "Fehler beim oeffnen der Datei: $!\n";

    zusätzlich zu der Ausgabe im Fehlerfall "Fehler beim oeffnen der Datei: $!
    \n" d
    en Exitcode 5 zurückgeben. Die Syntax "exit 5;" kenn ich, doch ich weiss
    in dem Fall nicht wohin damit ?

    mach es doch so:

    sub my_die($$$$) {
      my ($msg,$file,$line,$exitcode) = @_;
       if($msg =~ /\n$/s) {
         print STDERR $msg;
       }
       else {
         print STDERR "$msg at $file line $line\n";
       }

    exit($exitcode);
    }

    open DATEI,$pfad or my_die("Fehler beim oeffnen der Datei: $!\n",__FILE__,__LINE__,5);

    Gruesse,
     CK

    1. sub my_die($$$$) {
        my ($msg,$file,$line,$exitcode) = @_;
         if($msg =~ /\n$/s) {
           print STDERR $msg;
         }
         else {
           print STDERR "$msg at $file line $line\n";
         }

      exit($exitcode);
      }

      open DATEI,$pfad or my_die("Fehler beim oeffnen der Datei: $!\n",__FILE__,__LINE__,5);

      HI erstmal thx für die alternative.
      Was ich nicht ganz verstehe ist das "if($msg =~ /\n$/s)".
      Warum machst du das ?

      cya
      SI

      1. Guten Abend,

        Was ich nicht ganz verstehe ist das "if($msg =~ /\n$/s)".

        Imho wird hier mit Hilfe des RegEx geprüft, ob der Subroutine nur für $msg ein Wert übergeben wurde und $file und $line leer sind. Dann wird auch nur $msg ausgegeben, ansonsten $msg mit Angabe der Datei und der Zeile. Sähe auch im ersten Fall komisch aus:

        "Fehler beim Oeffnen der Datei: File not found at line"

        So interpretiere ich das, sollte ich falsch liegen, bitte korrigieren.

        mfg Torsten

        --
        Opinions are like assholes: everybody has one.
        ss:| zu:| ls:# fo:| de:[ va:| ch:? n4:& rl:? br:& js:| ie:% fl:( mo:}
        1. Hi,

          also ich verstehs jetzt warum du das gemacht hast.
          Denn bei "die" ist es ja dasselbe, dass nur ohne \n am Ende
          die Zeilennummer ausgegeben wird und da hast du das halt auch mitimplementiert. Verstehe :o)

          thx & cya
          SI

          1. Hi nochmal,

            noch ne Frage hinterher ..
            Warum machst du die Subroutine als Prototyp ?
            Was bringt das ?
            Wollt mich mal auf http://www.perldoc.com/perl5.8.0/pod/perlsub.html#Prototypes
            schlau machen, aber raff das nicht wirklich.

            cya
            SI