Why not adopt me?
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 builtinsplice
OFFSET and LENGTH are not optional since if you are not giving LIST thensplice_aliases
is just exactly the same assplice
.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 builtinpush
except that LIST gets spliced directly into ARRAY rather being copied. - unshift_aliases ARRAY, LIST
-
A wrapper for
splice_aliases
that emulates the builtinunshift
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>