Array-IntSpan
view release on metacpan or search on metacpan
lib/Array/IntSpan.pm view on Meta::CPAN
my $start_offset = $start_elem - $self->[$start][0] ;
my $end_offset = defined $self->[$end] ?
$end_elem - $self->[$end][0] : undef ;
#print "get_splice_parms: start $start, end $end, start_offset $start_offset";
#print ", end_offset $end_offset" if defined $end_offset ;
#print "\n";
my @modified = () ;
#If we are here, we need to test for whether we need to frag the
#conflicting element
if ($start_offset > 0) {
my $item = $self->[$start][2] ;
my $s = $self->[$start][0] ;
my $e = $start_elem-1 ;
my $new = defined($copy) ? $copy->($s,$e,$item) : $item ;
push @modified ,[$s, $e, $new ];
}
push @modified, [$start_elem,$end_elem,$value] if defined $value ;
#Do a fragmentation check
if (defined $end_offset
and $end_offset >= 0
and $end_elem < $self->[$end][1]
) {
my $item = $self->[$end][2] ;
my $s = $end_elem+1 ;
my $e = $self->[$end][1] ;
my $new = defined($copy) ? $copy->($s,$e,$item) : $item ;
push @modified , [$s, $e, $new] ;
}
( run in 0.940 second using v1.01-cache-2.11-cpan-b16cb0d3907 )