A reference is like a pointer from C and C++, except that it will always point at something (a reference can't be null or pointing to invalid memory).
So $array_reference is a variable which contains a pointer to the same memory as @array contains. That means that @array and @$array_reference (note the @ symbol there) are the same thing, but $array_reference (no @ symbol) is a different thing.
When the reference is passed to the sub, a copy of it is made. This copy also points to the same memory as @array, so @$reference is still the same thing as @array. If you tried to pass @array to the sub directly, the sub would have a copy of it and it would only be able to change the copy, but not be able to change the real @array.
You can read the tutorial for more information.
In reply to Re: References Explanation
by bunnyman
in thread References Explanation
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |