package Tie::PrintfScalar; sub TIESCALAR { my($class, $printf) = @_; return bless { value => undef, printf => $printf, }; } sub STORE { my($self, $value) = @_; return $self->{value} = $value; } sub FETCH { my($self) = @_; return sprintf($self->{printf}, $self->{value}); } sub DESTROY { undef ${$_[0]}; } 1; package main; my $nr; tie $nr, Tie::PrintfScalar, '%02d'; $nr = 2; print "$nr\n";