http://qs321.pair.com?node_id=158660

   1: <code>package Tie::Scalar::Symlink;
   2: # Copyright (C) 2001 Drake Wilson <premchai21 {at} bigfoot.com>
   3: #
   4: # This module is free software; you may redistribute and/or
   5: # modify it under the terms of the GNU General Public License
   6: # as published by the Free Software Foundation, either version
   7: # 2 of the License or (at your option) any later version.
   8: #
   9: # This module is distributed in the hope that it will be useful,
  10: # but WITHOUT ANY WARRANTY, without even the implied warranty
  11: # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  12: # the GNU General Public License for more details.
  13: #
  14: # You should have received a copy of the GNU General Public License
  15: # along with this module; if not, write to the Free Software
  16: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  17: # USA.
  18: 
  19: use strict;
  20: use warnings;
  21: use Carp;
  22: use vars qw($VERSION @ISA);
  23: 
  24: $VERSION = 0.01;
  25: @ISA = qw//;
  26: 
  27: sub TIESCALAR
  28: {
  29:     my ($class, $r) = @_;
  30:     (ref($r) eq 'SCALAR')
  31: 	|| croak 'Argument must be an unblessed reference to a scalar';
  32:     return bless \$r, $class;
  33: }
  34: 
  35: sub FETCH { $ {$ {$_[0]}} }
  36: sub STORE { $ {$ {$_[0]}} = $_[1] }
  37: sub DESTROY { undef $ {$_[0]} }
  38: 
  39: =head1 NAME
  40: 
  41: Tie::Scalar::Symlink
  42: 
  43: =head1 SYNOPSIS
  44: 
  45:         $t = 5;
  46:         tie $u, 'Tie::Scalar::Symlink', \$t;
  47:         print $u;  # prints 5 -- $u is linked to $t.
  48:         $u = 6;
  49:         print $t;  # prints 6
  50:         untie $u;
  51:         $t = 7;
  52:         print $u;  # prints 6
  53: 
  54: =head1 DESCRIPTION
  55: 
  56: This module allows you to link a scalar (source) to another (target) using the tie interface, such that accesses to the store are redirected to accesses to the target.  See SYNOPSIS.
  57: 
  58: =head1 SEE ALSO
  59: 
  60: L<perltie>, L<Tie::Scalar>
  61: 
  62: =cut
  63: 
  64: "Tie::Scalar::Symlink v0.01";
  65: 
  66: # It's very simple, but I can imagine it being very useful.
  67: # Feedback?
  68: </code>