package ClassPrintable; use overload q{""} => sub { return shift->stringify() }; sub new { my ($class,$args) = @_; return bless($args,$class); } sub stringify { my $self = shift; my $ret = "{"; for (sort keys %$self){ $ret .= " $_ : ".$self->{$_}.","; } chop($ret) if (keys %$self); return "$ret".' }'; } package main; my $c = ClassPrintable->new({a =>1,b=>2,c=>3}); print $c;