Tie::Scalar(3p) Perl Programmers Reference Guide Tie::Scalar(3p)

Tie::Scalar(3p) Perl Programmers Reference Guide Tie::Scalar(3p) #

Tie::Scalar(3p) Perl Programmers Reference Guide Tie::Scalar(3p)

NNAAMMEE #

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

SSYYNNOOPPSSIISS #

     package NewScalar;
     require Tie::Scalar;

     @ISA = qw(Tie::Scalar);

     sub FETCH { ... }           # Provide a needed method
     sub TIESCALAR { ... }       # Overrides inherited method


     package NewStdScalar;
     require Tie::Scalar;

     @ISA = qw(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';

DDEESSCCRRIIPPTTIIOONN #

 This module provides some skeletal methods for scalar-tying classes. See
 perltie for a list of the functions required in tying a scalar to a
 package. The basic TTiiee::::SSccaallaarr package provides a "new" method, as well
 as methods "TIESCALAR", "FETCH" and "STORE". The TTiiee::::SSttddSSccaallaarr package
 provides all the methods specified in  perltie. It inherits from
 TTiiee::::SSccaallaarr 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 legacy support 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 perltie section not only documents
 these, but has sample code as well:

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

 FETCH this
     Retrieve the value of the tied scalar referenced by _t_h_i_s.

 STORE this, value
     Store data _v_a_l_u_e in the tied scalar referenced by _t_h_i_s.

 DESTROY this
     Free the storage associated with the tied scalar referenced by _t_h_i_s.
     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.

TTiiee::::SSccaallaarr vvss TTiiee::::SSttddSSccaallaarr “Tie::Scalar” provides all the necessary methods, but one should realize they do not do anything useful. Calling “Tie::Scalar::FETCH” or “Tie::Scalar::STORE” results in a (trappable) croak. And if you inherit from “Tie::Scalar”, you _m_u_s_t provide either a “new” or a “TIESCALAR” method.

 If you are looking for a class that does everything for you that you
 don't define yourself, use the "Tie::StdScalar" class, not the
 "Tie::Scalar" one.

MMOORREE IINNFFOORRMMAATTIIOONN #

 The perltie section uses a good example of tying scalars by associating
 process IDs with priority.

perl v5.36.3 2023-02-15 Tie::Scalar(3p)