NAME

Array::Splice - Splice aliases into arrays

SYNOPSIS

use Array::Splice qw( splice_aliases push_aliases );

my @a = qw( foo bar );
my $x = 'baz';
splice_aliases @a,1,0,$x;
$x = 'zoop'; # Changes $a[1]
print "@a\n"; # foo zoop bar

sub wrapped_foo {
  push_aliases my @args => @_;  # Copy @_
  some_wrapper(sub { foo @args }); # &foo called with orginal arguments
}    

DESCRIPTION

This module does splicing of arrays for real. That is does exactly the same as the builtin splice function except that the inserted elements are existing scalar values not copies of them.

One possible use of this is to copy the @_ array but I'm sure that there are others.

This module does not export anything by default.

EXPORTS

splice_aliases ARRAY,OFFSET,LENGTH,LIST

Exactly like the builtin splice except that the scalar values that are the elements of LIST get spliced directly into ARRAY rather being copied. Unlike the builtin splice OFFSET and LENGTH are not optional since if you are not giving LIST then splice_aliases is just exactly the same as splice.

This is unlikely to be useful for tied arrays but for the sake of uniformity, splice_aliases() tries to call a SPLICE_ALIASES() method on the object to which the array is tied.

push_aliases ARRAY, LIST

A wrapper for splice_aliases that emulates the builtin push except that LIST gets spliced directly into ARRAY rather being copied.

unshift_aliases ARRAY, LIST

A wrapper for splice_aliases that emulates the builtin unshift except that LIST gets spliced directly into ARRAY rather being copied.

KNOWN ISSUES

As of Perl 5.8.9 Data::Alias works on all platforms. That largely renders this module obsolescent. On the other hand this module does not employ any of the deep black magic that Data::Alias uses.

The value of $[ is ignored because it works differently in 5.10 from it did previously and since nobody should be using it anyhow there's no point making an effort to support it.

AUTHOR

Brian McCauley, <nobull@cpan.org>

SEE ALSO

"splice" in perlfunc, Data::Alias.