use feature qw/say/;
say exists($ENV{PERL_MYTEST}) ? "exists" : "doesn't exist";
say defined($ENV{PERL_MYTEST}) ? "defined" : "undefined";
say length($ENV{PERL_MYTEST}) ? "non-zero length" : "zero length";
say "<<$ENV{PERL_MYTEST}>>";
The output will be:
exists
defined
zero length
<<>>
Which indicates that setting an environment variable to '' (an empty string) does not create an undefined variable, but rather, a defined variable with a value of zero length. Your assumption is just incorrect, that's all. Test for length.
If you unset the environment variable in question, and then run the same test, you will get "doesn't exist", and "undefined".
I suppose it's possible that your mileage will vary depending on operating system, but I don't know what OS would do it differently.
|