NAME
   Attribute::TieClasses - Attribute wrappers for CPAN Tie classes

VERSION
   version 1.101700

SYNOPSIS
     use Attribute::TieClasses;
     my $k : Timeout(EXPIRES => '+2s');
     # loads in Tie::Scalar::Timeout and tie()s $k with those options

DESCRIPTION
   Damian Conway's wonderful "Attribute::Handlers" module provides an easy
   way to use attributes for "tie()"ing variables. In effect, the code in
   the synopsis is simply

       use Attribute::Handlers
           autotie => { Timeout => 'Tie::Scalar::Timeout' };

   Still, going one step further, it might be useful to have centrally
   defined attributes corresponding to commonly used Tie classes found on
   CPAN.

   Simply "use()"ing this module doesn't bring in all those potential Tie
   classes; they are only loaded when an attribute is actually used.

   The following attributes are defined:

     Attribute name(s)  Variable ref  Class the variable is tied to
     =================  ============  =============================
     Alias              HASH          Tie::AliasHash
     Aliased            HASH          Tie::AliasHash
     Cache              HASH          Tie::Cache
     CharArray          ARRAY         Tie::CharArray
     Counter            SCALAR        Tie::Counter
     Cycle              SCALAR        Tie::Cycle
     DBI                HASH          Tie::DBI
     Decay              SCALAR        Tie::Scalar::Decay
     Defaults           HASH          Tie::HashDefaults
     Dict               HASH          Tie::TieDict
     Dir                HASH          Tie::Dir
     DirHandle          HASH          Tie::DirHandle
     Discovery          HASH          Tie::Discovery
     Dx                 HASH          Tie::DxHash
     Encrypted          HASH          Tie::EncryptedHash
     FileLRU            HASH          Tie::FileLRUCache
     Fixed              HASH          Tie::SubstrHash
     FlipFlop           SCALAR        Tie::FlipFlop
     IPAddrKeyed        HASH          Tie::NetAddr::IP
     Insensitive        HASH          Tie::CPHash
     Ix                 HASH          Tie::IxHash
     LDAP               HASH          Tie::LDAP
     LRU                HASH          Tie::Cache::LRU
     ListKeyed          HASH          Tie::ListKeyedHash
     Math               HASH          Tie::Math
     Mmap               ARRAY         Tie::MmapArray
     NumRange           SCALAR        Tie::NumRange
     NumRangeWrap       SCALAR        Tie::NumRangeWrap (in Tie::NumRange)
     Offset             ARRAY         Tie::OffsetArray
     Ordered            HASH          Tie::LLHash
     PackedInt          ARRAY         Tie::IntegerArray
     PerFH              SCALAR        Tie::PerFH
     Persistent         HASH          Tie::Persistent
     RDBM               HASH          Tie::RDBM
     Range              HASH          Tie::RangeHash
     RangeKeyed         HASH          Tie::RangeHash
     Rank               HASH          Tie::Hash::Rank
     Ranked             HASH          Tie::Hash::Rank
     Ref                HASH          Tie::RefHash
     Regexp             HASH          Tie::RegexpHash
     RegexpKeyed        HASH          Tie::RegexpHash
     Secure             HASH          Tie::SecureHash
     Sentient           HASH          Tie::SentientHash
     Shadow             HASH          Tie::ShadowHash
     Shadowed           HASH          Tie::ShadowHash
     Sort               HASH          Tie::SortHash
     Sorted             HASH          Tie::SortHash
     Strict             HASH          Tie::StrictHash
     Substr             HASH          Tie::SubstrHash
     TextDir            HASH          Tie::TextDir
     Timeout            SCALAR        Tie::Scalar::Timeout
     Toggle             SCALAR        Tie::Toggle
     Transact           HASH          Tie::TransactHash
     TwoLevel           HASH          Tie::TwoLevelHash
     Vec                ARRAY         Tie::VecArray
     Vector             ARRAY         Tie::VecArray
     WarnGlobal         SCALAR        Tie::WarnGlobal::Scalar

   I haven't had occasion to test all of these attributes; they were taken
   from the module descriptions on CPAN. For some modules where the name
   didn't ideally translate into an attribute name (e.g.,
   "Tie::NetAddr::IP"), I have taken some artistic liberty to create an
   attribute name. Some tie classes require the use of the return value
   from "tie()" and are as such not directly usable by this mechanism,
   AFAIK.

   No censoring has been done as far as possible; there are several
   attributes that accomplish more or less the same thing. TIMTOWTDI.

   If you want any attribute added or renamed or find any mistakes or
   omissions, please contact me at <[email protected]>.

FUNCTIONS
 make_handler
   Generates and evaluates the attribute handler code. It takes the name of
   the attribute to generate, the type of the variable it applies to -
   scalar, array, hash, general variable -, the name of the package that
   implements the "tie()", and the filename where that package lives in.

   It calls one of the "make_tie_*()" functions that provides part of the
   code to generate depending on the tied variable type.

 make_tie_array
   Returns the code line for the tie of a scalar variable that is needed by
   "make_handler()".

 make_tie_hash
   Returns the code line for the tie of an array variable that is needed by
   "make_handler()".

 make_tie_scalar
   Returns the code line for the tie of a hash variable that is needed by
   "make_handler()".

 make_tie_var
   Is more flexible than the other "make_tie_*()" functions in that it
   checks the type of the variable that the attribute is being applied to.

EXAMPLES
       # Tie::Scalar::Timeout
       my $m : Timeout(NUM_USES => 3, VALUE => 456, POLICY => 777);
       print "$m\n" for 1..5;

       # Tie::Hash::Rank
       my %scores : Ranked;
       %scores = (
           Adams   => 78,
           Davies  => 35,
           Edwards => 84,
           Thomas  => 47
       );
       print "$_: $scores{$_}\n" for qw(Adams Davies Edwards Thomas);

       # Tie::FlipFlop;
       my $ff : FlipFlop(qw/Red Green/);
       print "$ff\n" for 1..5;

INSTALLATION
   See perlmodinstall for information and options on installing Perl
   modules.

BUGS AND LIMITATIONS
   No bugs have been reported.

   Please report any bugs or feature requests through the web interface at
   <http://rt.cpan.org>.

AVAILABILITY
   The latest version of this module is available from the Comprehensive
   Perl Archive Network (CPAN). Visit <http://www.perl.com/CPAN/> to find a
   CPAN site near you, or see
   <http://search.cpan.org/dist/Attribute-TieClasses/>.

   The development version lives at
   <http://github.com/hanekomu/Attribute-TieClasses/>. Instead of sending
   patches, please fork this project using the standard git and github
   infrastructure.

AUTHOR
     Marcel Gruenauer <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2001 by Marcel Gruenauer.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.