Leser: 1
![]() |
|< 1 2 >| | ![]() |
14 Einträge, 2 Seiten |
QuoteBei dir hört sich das fast so an, als währe der Datentyp unsigned ein generelles Feature, was C hat und Perl nicht.
Quotedas geht deutlich über die Funktionalität klassischer Typisierung hinaus.
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
package Unsigned;
use strict;
use warnings;
use Scalar::Util qw( looks_like_number );
use Carp qw( croak );
sub TIESCALAR {
my ($class, $number) = @_;
my $self = bless \$number, $class;
$self->_check_number;
return $self;
}
sub _check_number {
my ($self, $number) = @_;
my $checkvalue = defined $number ? $number : $$self;
croak "Sie müssen eine Nummer eingeben" if not looks_like_number($checkvalue);
croak "Nur Positive Nummer erlaubt" if $checkvalue < 0;
}
sub FETCH { ${$_[0]} }
sub STORE {
my ($self, $newvalue) = @_;
$self->_check_number($newvalue);
$$self = $newvalue;
}
1;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;
use Unsigned;
tie my $wert, 'Unsigned', 10;
print $wert, "\n";
$wert = 100;
print $wert, "\n";
$wert = -100;
print $wert, "\n";
$wert = 'hallo';
print $wert, "\n";
![]() |
|< 1 2 >| | ![]() |
14 Einträge, 2 Seiten |