Leser: 1
|< 1 2 >| | 12 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use constant REGEXP_HOSTNAME => qr/^([\w\-.]+)$/;
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_hostname
{
my $value = shift;
return 0 unless $value =~ REGEXP_HOSTNAME;
return 0 unless index($value, ".") > 0;
my @parts = split/\./, $value;
my $valid = @parts;
foreach my $label (@parts)
{
$valid = 0 if (length $label > 63) or ($label =~ m!^\-!) or ($label =~ m!\-$!);
last unless $valid;
}
$valid = 0 if $parts[-1] =~ m!^\d.*!;
return $valid;
}
sub valid_ipaddr
{
my $value = shift;
return $value =~ REGEXP_IPADDR;
}
sub valid_host
{
my $value = shift;
return valid_hostname($value) || valid_ipaddr($value);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use Net::IDN::Encode;
use constant REGEXP_HOSTNAME => qr!^[\w\-.]+$!;
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 host_toidn
{
return domain_to_ascii(shift);
}
sub host_fromidn
{
return domain_to_unicode(shift);
}
sub valid_hostname
{
my $value = host_toidn(shift);
return 0 unless $value =~ REGEXP_HOSTNAME;
return 0 unless index($value, ".") > 0;
my @parts = split /\./, $value;
my $valid = scalar @parts;
foreach my $label (@parts)
{
$valid = 0 if (length $label > 63) or ($label =~ qr!^\-!) or ($label =~ qr!\-$!);
last unless $valid;
}
$valid = 0 if $parts[-1] =~ qr!^\d.*!;
return $valid;
}
sub valid_ipaddr
{
my $value = shift;
return $value =~ REGEXP_IPADDR;
}
sub valid_host
{
my $value = shift;
return valid_hostname($value) || valid_ipaddr($value);
}
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;
}
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
$valid = 0 if $parts[-1] =~ qr!^\d.*!;
|< 1 2 >| | 12 Einträge, 2 Seiten |