Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
ArrayBound.pm
# ArrayBound.pm -- Ueberprueft Indexgrenzen zur Laufzeit.
use Tie::Array;
package ArrayBound;
use vars qw (@ISA);
@ISA = qw(Tie::Array);
sub TIEARRAY {
my $classname = shift;
my $maxindex = shift;
return bless { MAX => $maxindex, VALS => [] }, $classname;
}
sub FETCH {
my $self = shift;
my $indx = shift;
die "FETCH(): Index out of bounds: $indx\n"
unless $indx < $self->{MAX};
return $self->{VALS}->[$indx];
}
sub STORE {
my $self = shift;
my $indx = shift;
my $nval = shift;
die "STORE(): Index out of bounds: $indx\n"
unless $indx < $self->{MAX};
$self->{VALS}->[$indx] = $nval;
}
sub FETCHSIZE { my $self = shift; return scalar @{$self->{VALS}}; }
sub STORESIZE {
my $self = shift;
my $nsize = abs(shift());
die "STORESIZE(): Index out of bounds: $nsize\n"
unless $nsize < $self->{MAX};
# Wir koennten hier die Groesse des anonymen Arrays VALS
# mittels splice() reduzieren, aber wir verzichten darauf.
}
1;
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:49 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|