Chapter 17. The Magic of Tied Variables
Perl lets me hook into its variables through a mechanism it calls tying. I can change how things happen when I access and store values, or just about anything else I do with a variable.
Tied variables go back to the basics. I can decide what Perl will do when I store or fetch values from a variable. Behind the scenes, I have to implement the logic for all of the variable’s behavior. Since I can do that, I can make what look like normal variables do anything that I can program (and that’s quite a bit). Although I might use a lot of magic on the inside, at the user level, tied variables look like the familiar variables. Not only that, tied variables work throughout the Perl API. Even Perl’s internal workings with the variable use the tied behavior.
They Look Like Normal Variables
You probably already have seen tied variables in action, even without using tie. The dbmopen command ties a
hash to a database file:
dbmopen %DBHASH, "some_file", 0644;
That’s old school Perl, though. Since then, the numbers and types of
these on-disk hashes proliferated and improved. Each implementation solves
some problem in another one. If I want to use one of those instead of the
implementation Perl wants to use with dbmopen, I use tie to associate my hash with the right
module:
tie %DBHASH, 'SDBM_File', $filename, $flags, $mode;
There’s some hidden magic here. The programmer sees the %DBHASH variable, which acts just like a normal hash. To make it work out, though, ...
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