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

VERSION
    version 1.100710

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 <marcel@codewerk.com>.

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/Public/Dist/Display.html?Name=Attribute-TieClasses>.

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 <marcel@cpan.org>

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.

