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 . 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 . AVAILABILITY The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit to find a CPAN site near you, or see . The development version lives at . Instead of sending patches, please fork this project using the standard git and github infrastructure. AUTHOR Marcel Gruenauer 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.