Thread hostname checking (11 answers)
Opened by esskar at 2004-08-04 02:30

ronald
 2004-08-11 11:52
#85357 #85357
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,11.08.2004, 03:04]
Code: (dl )
1
2
3
4
5
6
use constant REGEXP_IPADDR   => qr!^((?:(?:25[0-5]|2[0-4]\d|[0-1]??\d{1,2})[.](?:25[0-5]|2[0-4]\d|[0-1]??\d{1,2})[.](?:25[0-5]|2[0-4]\d|[0-1]??\d{1,2})[.](?:25[0-5]|2[0-4]\d|[0-1]??\d{1,2})))$!;
sub valid_ipaddr
{
my $value = shift;
return $value =~ REGEXP_IPADDR;
}


Spaß![/quote]

ohne beurteilen zu können/wollen ob deine RegEx richtig oder vollständig ist oder noch irgendwelche Sonderfälle berücksichtigt würde ich das so machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sub valid_ipaddr
{
my $value = shift;
my @teile = split /\./, $value;
# zuerst mal prüfen, ob es sich um eine korrekte Adresse handelt
return(0) if @teile != 4; # es müssen 4 Teile sein
foreach (@teile) { # in jedem Teil
return if /\D/; # dürfen nur Ziffern vorkommen
return if $_ > 255 or $_ < 0; # zwischen 0 und 255
}
# hier können evtl. noch weitere Prüfungen folgen (127.0.0.1)
return(1); # o.k.
}
# untested

Falls du dann noch irgendwelche Sonderaktionen brauchst (z.B. 127.0.0.1 oder so), kannst du das hier einfacher einbauen als bei deiner RegEx.

View full thread hostname checking