use overload '""' => sub { shift->{'name_lc'} }, fallback => 1; [...] sub new { my ($class, $name) = @_; return $class->SUPER::new( { name => $name, name_lc => lc($name), _groups => {}, placeholder => '?' } ); } sub name_lc { shift->{'name_lc'} } #### %Time Sec. #calls sec/call F name 14.67 55.4872 2174052 0.000026 :...5.8.2/Class/DBI/Column.pm:37 9.55 36.1474 2178574 0.000017 Class::DBI::Column::name_lc