package MyGMTime; # MUST be ordered correctly: use enum qw(sec min hour mday mon year wday yday); sub new { my ($class) = shift; my @values = gmtime(); bless [@values], $class; } sub get { my ($self, $field) = @_; no strict 'refs'; return $self->[&$field]; } package main; my $x = MyGMTime->new; print $x->get("year"), "\n"; # mnemonic/hashly print $$x[5], "\n"; # arrayish #### ### use this instead of the 'use enum' statement: my %index = ( sec => 0, min => 1, hour => 2, mday => 3, mon => 4, year => 5, wday => 6, yday => 7, ); ### Replace get() with this. All remaining code is identical. sub get { my ($self, $field) = @_; return $self->[$index{$field}]; }