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
,
LIST
-
The method invoked by the command:
tie $scalar, ClassName,
LIST
Associates 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
this
-
Retrieve the value of the tied scalar referenced by
this
.
-
STORE
this, value
-
Store
value
in the tied scalar referenced by
this
.
-
DESTROY
this
-
Free 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.