According to the documentation Attribute::Handlers is "an excellent and intuitive interface through which to tie variables". I've tied a few variables in my time so I thought I'd give it a go.
But I think I'm misunderstanding it, as it doesn't give me the results I expect.
Here's a simple tied hash (that doesn't do anything useful)
#!/usr/bin/perl -w package Tie::Hash::Test; use Tie::Hash; use vars qw(@ISA); @ISA = 'Tie::StdHash'; sub TIEHASH { my $class = shift; my %self; @self{@_} = (undef) x @_; bless \%self, $class; } package main; tie my %hash, 'Tie::Hash::Test', 'one', 'two', 'three'; print join(':', keys %hash), "\n";
Running this code gives the expected results of:
one:three:two
Here's the same tied hash using attributes:
#!/usr/bin/perl -w package Tie::Hash::Test; use Tie::Hash; use Attribute::Handlers autotie => { __CALLER__::Test => __PACKAGE__ } +; use vars qw(@ISA); @ISA = 'Tie::StdHash'; sub TIEHASH { my $class = shift; my %self; @self{@_} = (undef) x @_; bless \%self, $class; } package main; my %hash : Test('one', 'two', 'three'); print join(':', keys %hash), "\n";
Running this code gives the result:
ARRAY(0x80f551c)
Which isn't quite what I expected.
Has anyone else tried this? Have you had better luck?
--"The first rule of Perl club is you don't talk about Perl club."
In reply to autotie in Attribute Handlers by davorg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |