use warnings; use strict; my %global; try($_) for 0,0,0,1,0; sub try { my $xyz = shift; if($xyz) { $global{globalvar} = undef; } printf "try(%d) => globalvar %s\n", $xyz, exists $global{globalvar} ? "exists" : "doesn't exist"; } __END__ try(0) => globalvar doesn't exist try(0) => globalvar doesn't exist try(0) => globalvar doesn't exist try(1) => globalvar exists try(0) => globalvar exists