use 5.010; use strict; use warnings; package InOutObj; use Hash::Util::FieldHash 'fieldhash'; fieldhash my %upper; fieldhash my %lower; sub new {bless \do {my $dummy}, shift} sub upper {$upper{$_[0]}} sub lower {$lower{$_[0]}} sub set { my ($self, $arg) = @_; $upper{$self} = uc $arg; $lower{$self} = lc $arg; $self; } package main; my $obj = InOutObj->new; $obj->set('i LiKe WiNe'); say $obj->upper; say $obj->lower; __END__ I LIKE WINE i like wine