package Foobar; my $var; # If called with no arguments, just returns the value. Otherwise sets and returns. sub foovar { $var = shift if @_; return $var; } # This version won't allow the value to be set twice sub foovar_once { die "Attempt to foovar more than once\n" if @_ && defined($var); $var = shift if @_; return $var; } 1; #### use Foobar; if (1) { Foobar::foovar(7); print "1. The value is now ", Foobar::foovar(), "\n"; Foobar::foovar(9); print "2. The value is now ", Foobar::foovar(), "\n"; } else { Foobar::foovar_once(7); print "1. The value is now ", Foobar::foovar_once(), "\n"; Foobar::foovar_once(9); print "2. The value is now ", Foobar::foovar_once(), "\n"; }