package NewScalar;
require Tie::Scalar;
@ISA = (Tie::Scalar);
sub FETCH { ... } # Provides additional method
sub TIESCALAR { ... } # Overrides inherited method
package NewStdScalar;
require Tie::Scalar;
@ISA = (Tie::StdScalar);
sub FETCH { ... }
package main;
tie $new_scalar, "NewScalar";
tie $new_std_scalar, "NewStdScalar";This module provides some skeletal methods for scalar-tying classes.
(See Chapter 5 for a list of the functions required in tying a scalar to
a package.) The basic Tie::Scalar package provides a new()
method, as well
as methods TIESCALAR(), FETCH() and STORE(). The
Tie::StdScalar package provides all methods specified in Chapter 5.
It inherits from
Tie::Scalar and causes scalars tied to it to behave exactly like the
built-in scalars, allowing for selective overloading of methods. The new()
method is provided as a means of grandfathering for classes that forget to
provide their own TIESCALAR() method.
For developers wishing to write their own tied-scalar classes, methods are summarized below. (Chapter 5 not only documents these, but also has sample code.)
TIESCALAR ClassName, LISTThe method invoked by the command:
tie $scalar, ClassName, LISTAssociates a new
scalar instance with the specified class. LIST would represent
additional arguments (along the lines of the AnyDBM_File library module and
associated modules) needed to complete the association.
FETCH thisRetrieve the value of the tied scalar referenced by this.
STORE this, valueStore value in the tied scalar referenced by this.
DESTROY thisFree the storage associated with the tied scalar referenced by this.
This is rarely needed, since Perl manages its memory well. But the
option exists, should a class wish to perform specific actions upon the
destruction of an instance.
Chapter 5 has a good example using tied scalars to associate process IDs with priority.