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;