The Camel, 3ed. has an example:
package LuckyDraw;
use overload
'<>' => sub {
my $self = shift;
return splice @$self, rand @$self, 1;
};
sub new {
my class = shift;
return bless [@_] -> $self;
}
1;
The book does not discuss the rules, but I'm sure this example breaks some of them. To work with
while (<$foo>){}, I think the return value should be true in 'bool' context until the source is exhausted. To cope with
my @shuffle=<$deck>; and with slices, a
wantarray clause should be there to shuffle and return the whole $deck, leaving $deck empty.
The rules you observe should only be the ones you need to observe.
After Compline,
Zaxo