package LuckyDeck; use overload '<>' => sub { my $self = shift; return splice( @$self, rand @$self, 1) unless wantarray; my @deck; push @deck, splice( @$self, rand @$self, 1) while @$self; @deck; }; sub new { my $class = shift; bless [@_], $class; } package main; my $quux = LuckyDeck->new(0..9); print 'List Context',$/; print for <$quux>; print $/;