@node Tie/Scalar, Tie/SubstrHash, Tie/Hash, Module List
@unnumbered base class definitions for tied scalars


@unnumberedsec NAME

Tie::Scalar, Tie::StdScalar - base class definitions for tied scalars

@unnumberedsec SYNOPSIS

@example
package NewScalar;
require Tie::Scalar;
 
@@ISA = (Tie::Scalar);
 
sub FETCH @{ ... @}		# Provide a needed method
sub TIESCALAR @{ ... @}	# Overrides inherited method
     
 
package NewStdScalar;
require Tie::Scalar;

@@ISA = (Tie::StdScalar);

# All methods provided by default, so define only what needs be overridden
sub FETCH @{ ... @}


package main;

tie $new_scalar, @'NewScalar@';
tie $new_std_scalar, @'NewStdScalar@';
@end example

@unnumberedsec DESCRIPTION

This module provides some skeletal methods for scalar-tying classes. See
@xref{(perl.info)perltie,Perltie}, for a list of the functions required in tying a scalar to a
package. The basic @strong{Tie::Scalar} package provides a new method, as well
as methods TIESCALAR, FETCH and STORE. The @strong{Tie::StdScalar}
package provides all the methods specified in  @xref{(perl.info)perltie,Perltie},. It inherits from
@strong{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, the methods
are summarized below. The @xref{(perl.info)perltie,Perltie}, section not only documents these, but
has sample code as well:

@table @asis
@item TIESCALAR classname, LIST
The method invoked by the command @code{tie $scalar, classname}. Associates a new
scalar instance with the specified class. LIST would represent additional
arguments (along the lines of @xref{AnyDBM_File,AnyDBM_File}, and compatriots) needed to
complete the association.

@item FETCH this
Retrieve the value of the tied scalar referenced by @emph{this}.

@item STORE this, value
Store data value in the tied scalar referenced by @emph{this}.

@item DESTROY this
Free the storage associated with the tied scalar referenced by @emph{this}.
This is rarely needed, as Perl manages its memory quite well. But the
option exists, should a class wish to perform specific actions upon the
destruction of an instance.

@end table
@unnumberedsec MORE INFORMATION

The @xref{(perl.info)perltie,Perltie}, section uses a good example of tying scalars by associating
process IDs with priority.

