Here's a failed attempt. It does NOT work correctly (inserting or deleting does not "shift" elements in the original array), also suffers from all the joys of local esp. you can not use the original foo while in the local scope. Just for your amusement.
$ perl
@foo = 1..5;
$" = ':';
{
# setup
*bar = \@foo; # or other aliasing method, or localise from foo itsel
+f
local @bar[3..$#bar];
splice @bar, 3;
# "test" code
print "[1] =@bar=\n";
splice @bar, 1, 0, 'new';
print "[2] =@bar=\n";
}
# examine @foo after
print "[3] =@foo=\n";
^D
[1] =1:2:3=
[2] =1:new:2:3=
[3] =1:new:2:4:5=
Update: minor wording update