Overloading Constants
You can change how constants are interpreted by Perl with overload::constant, which is most usefully
placed in a package’s import
method. (If you do this, you should properly invoke overload::remove_constant in the package’s
unimport method so that the package
can clean up after itself when you ask it to.)
Both overload::constant
and overload::remove_constant expect a list of
key/value pairs. The keys should be any of integer, float, binary, q, and qr, and each value should be the name of a
subroutine, an anonymous subroutine, or a code reference that will
handle the constants.
sub import { overload::constant ( integer => \&integer_handler,
float => \&float_handler,
binary => \&base_handler,
q => \&string_handler,
qr => \®ex_handler ) }Any handlers you provide for integer and float will be invoked whenever the Perl
tokener encounters a constant number. This is independent of the
constant pragma; simple statements such as:
$year = cube(12) + 1; # integer $pi = 3.14159265358979; # float
will trigger whatever handler you requested.
The binary key lets you intercept binary, octal, and hexadecimal
constants. q handles single-quoted
strings (including strings introduced with q) and constant substrings within qq- and qx-quoted strings and here documents.
Finally, qr handles constant pieces
within regular expressions, as described at the end of Chapter 5.
The handler will be passed three arguments. The first argument is the original constant, in whatever form it was provided ...
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