Object Construction
All objects are references, but not all references are objects. A reference won’t work as an object unless its referent is specially marked to tell Perl to what package it belongs. The act of marking a referent with a package name—and, therefore, its class, since a class is just a package—is known as blessing. You can think of the blessing as turning a reference into an object, although it’s more accurate to say that it turns the reference into an object reference.
The bless function takes either one or two arguments. The first argument is a
reference and the second is the package to bless the referent into. If the
second argument is omitted, the current package is used.
$obj = { }; # Get reference to anonymous hash.
bless($obj); # Bless hash into current package.
bless($obj, "Critter"); # Bless hash into class Critter.Here we’ve used a reference to an anonymous hash, which is what people usually use as the data structure for their objects. Hashes are extremely flexible, after all. But allow us to emphasize that you can bless a reference to anything you can make a reference to in Perl, including scalars, arrays, subroutines, and typeglobs. You can even bless a reference to a package’s symbol table hash if you can think of a good reason to. (Or even if you can’t.) Object orientation in Perl is completely orthogonal to data structure.
Once the referent has been blessed, calling the built-in ref function on its reference returns the name of the blessed class instead ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access