{ package Container; use overload ( '@{}' => sub { return [sort keys %{$_[0]}] }, fallback => 1, ); sub new { return bless { map { $_ => 1 } @_[1 .. $#_] }, $_[0]; } } my $c = Container->new( qw/ e1 e2 e3 / ); print "member $_\n" for @$c; __output__ member e1 member e2 member e3