Si queremos que la interfaz de shift2
sea similar
a la de shift
debemos hacer
uso de prototipos. Podemos redeclarar la
función como:
sub shift2(\@) { splice @{$_[0]}, 0, 2 }
El prototipo \@
indica dos cosas:
@x = shift2 %a Type of arg 1 to main::shift2 must be array (not hash dereference) @x = shift2 \@a Type of arg 1 to main::shift2 must be array @x = shift2 @a, @b Too many arguments for main::shift2
Como se ve en el ejemplo, se comprueba que el número y la clase de los parametros coinciden.
Casiano Rodríguez León