in reply to Is it worth the reference?

Each time you pass an array to a subroutine you make a copy of it. If you pass a reference, you don't. Hence for small arrays the is no huge difference, but if you are passing big arrays around, you really really want to use a reference.

I'm not sure how it works with built-in functions, though. Someone with greater knowledge will have to clear that up.