Acme-Array-MaxSize

 view release on metacpan or  search on metacpan

lib/Acme/Array/MaxSize.pm  view on Meta::CPAN

sub STORESIZE {
    my ($self, $count) = @_;
    if ($count > $max_size{$self}) {
        carp 'Array too long';
        $count = $max_size{$self};
    }
    $#{$self} = $count - 1;
}

sub SPLICE {
    my ($self, $offset, $length, @list) = @_;
    if ($offset > $max_size{$self}) {
        carp 'Array too long';
        return;
    }

    if ($offset + $length > $max_size{$self}) {
        carp 'Array too long';
        $length = $max_size{$self} - $offset;
    }

    my $asked = @$self - $length + @list;
    if ($asked > $max_size{$self}) {
        carp 'Array too long';
        if ($offset == 0) {
            splice @list, 0, $asked - $max_size{$self};
        } else {
            splice @list, $max_size{$self} - $asked;
        }
    }
    $self->SUPER::SPLICE($offset, $length, @list);
}


=head1 NAME

Acme::Array::MaxSize - Limit the maximal size your arrays can get.

=head1 VERSION

Version 0.04



( run in 0.525 second using v1.01-cache-2.11-cpan-65fba6d93b7 )