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