Alain: Ist die Lösung ok?

Beitrag lesen

hi,
ich versuchs mal.

Nur mein kleines Testskript:

#!/usr/bin/perl

use strict;

my $arg="@ARGV";
my $tmp="$arg";
$tmp=~s/\d//g;

existiert $arg auf jeden fall?
sonst müsste es eventuell
my $arg="@ARGV"||'standardportzahl';
oder zumindest
my $arg="@ARGV"||'';
heissen

if($tmp) {

#wenn zahl,print "Falsche Zeichen...?

print "Falsche Zeichen: $tmp\n";
   print "Der Parameter muss eine Ganzzahl zwischen 0 und 65535 sein.\n";
   exit;
}

ich denke die fragestellung oben ist falsch oder unnötig
besser wäre unless ($tmp =~ /[^\d]/) anstatt if ($tmp)
aber weiter oben hast Du ja mit $tmp=~s/\d//g; bereits dafür gesorgt
dass da nur noch zahlen drinn sind im $tmp ,desshalb unnötig,nochmal abzufragen.

if($arg < 1 || $arg > 65535) {

da wäre vielleicht if(($arg) && ($arg > 65535))
genügsam

print "Der Parameter muss eine Ganzzahl zwischen 0 und 65535 sein.\n";
   exit;
}

Also mein genaues Ziel ist, das ein über einen frei wählbaren Port eine Socketverbindung geöffnet werden soll. Bevor dann unzählige Variablen aus Konfigurationsdateien lade, möchte ich natürlich zu Anfang prüfen, ob der Port auch tatsächlich eine Ganzzahl ist. Schreibfehler wie zum Beispiel der Buchstabe o statt einer Null oder eine Kommazahl sollen rechtzeitig identifiziert werden. Wäre das obige Beispiel ok als Lösung?

probieren geht manchmal über studieren
Gruss
Alain