use constant EMPTY => 0; $bottles{beer} = 99; sub take_one_down { return --$bottles{beer}; } sub pass_around { print "No more beer\n" and exit($bar) if ($bottles{beer} eq EMPTY); } print "$bottles{beer} on the wall\n"; while ($bottles{beer}) { take_one_down($bottles{beer}); pass_around($bottles{beer}); print "$bottles{beer} on the wall\n"; }