package Tie::Constvar; use Carp; sub TIESCALAR { my ($class, $initval) = @_; my $var = $initval; return bless \$var => $class; } sub FETCH { my $selfref = shift; return $$selfref; } sub STORE { confess "cannot assign value to a constant!"; } package main; tie my $AVO, Tie::Constvar, 6; print $AVO,"\n"; tie $AVO, Tie::Constvar, 3; #this works print $AVO,"\n"; $AVO = 3; #this will throw an exception! print $AVO,"\n";