#! perl use strict; use warnings; package Doohickey; require Tie::Scalar; our @ISA = 'Tie::StdScalar'; # returns the value you presumably want to print. sub FETCH { "Hi\n"; } # This actually prints a value, and then if you use the assignment, # the FETCH is called that returns a value sub STORE { my ($this, $val) = @_; print "I see arguments ($val)\n"; } package main; my $enemy; tie $enemy->{strength}, 'Doohickey'; printf "%s\n", $enemy->{strength} = 5; # you could "pass" a ref to an argument list, too print "...\n"; print $enemy->{strength}, "\n";