www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

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
FreeBSD Logo