perl -MConfig -e "print qq(For Perl $Config{version} the push prototype is: ),prototype 'CORE::push' " For Perl 5.8.8 the push prototype is: \@@ perl -e " sub my_push (\@@){$x=shift;push @{$x},@_ }; my_push @arr, qw(a,c,v); print @arr" a,c,v # BUT if you inspect manually the prototype of the original push on a recent Perl you'll see perl -MConfig -e "print qq(For Perl $Config{version} the push prototype is: ),prototype 'CORE::push' " For Perl 5.14.2 the push prototype is: +@