in reply to how does splice do it?

This is what prototypes are properly used for.

$ perl -e'print prototype( "CORE::splice"),$/' \@;$;$@
The \@ prototype requires a variable with the @ sigil and implicitly converts it to a reference. If you define sub mysplice (\@;$;$@) { ...}, you will obtain splice-like behavior with respect to the arguments.

After Compline,
Zaxo