$ ./my_with_if.pl $param is undef $my_var after declaration is "default" (as expected) $my_var after '//=' is "default" $param is "call 1" $my_var after declaration is undef (as expected) $my_var after '//=' is "call 1" $param is "call 2" $my_var after declaration is "call 1" (unexpected to me!) $my_var after '//=' is "call 1" $param is "call 3" $my_var after declaration is "call 1" (unexpected to me!) $my_var after '//=' is "call 1"