References
Perl’s references are similar to C’s pointers, but in operation, they’re more like what you have in Pascal or Ada. A reference “points” to a memory location, but because there’s no pointer arithmetic or direct memory allocation and deallocation, you can be sure that any reference you have is a valid one. References allow object-oriented programming and complex data structures, among other nifty tricks. See the perlreftut and perlref manpages. The Alpaca covers references in great detail.
Complex Data Structures
References allow us to make complex data structures in Perl. For example, suppose you want a two-dimensional array. You can do that,[*] or you can do something much more interesting, like have an array of hashes, a hash of hashes, or a hash of arrays of hashes.[†] See the perldsc (data-structures cookbook) and perllol (lists of lists) manpages. Again, the Alpaca covers this quite thoroughly, including techniques for complex data manipulation, like sorting and summarizing.
Object-Oriented Programming
Yes, Perl has objects; it’s buzzword compatible with all of those other languages. Object-oriented (OO) programming lets you create your own user-defined data types with associated abilities, using inheritance, overriding, and dynamic method lookup.[‡] Unlike some object-oriented languages, though, Perl doesn’t force you to use objects. (Even many object-oriented modules can be used without understanding objects.) But if your program is going to be larger than N lines of ...