shenme has asked for the wisdom of the Perl Monks concerning the following question:
I came across a strange side effect while using File::Spec::tmpdir. $ENV{TMPDIR} is being created and set to undef, as though it is being autovivified. I pulled the pieces out of File::Spec::Win32 and ::Unix and got it down to this example:
produces output:#!perl -w use strict; use warnings; sub see_args { printf "I see args '%s'\n", join("', '",@_); return; } warn sprintf "In test, at start (1): TMPDIR '%s'\n", ! exists $ENV{TMPDIR} ? '<absent>' : ! defined $ENV{TMPDIR} ? + '<undef>' : $ENV{TMPDIR}; see_args( @ENV{qw(TMPDIR TEMP TMP)} ); warn sprintf "In test, at end (2): TMPDIR '%s'\n", ! exists $ENV{TMPDIR} ? '<absent>' : ! defined $ENV{TMPDIR} ? + '<undef>' : $ENV{TMPDIR};
In test, at start (1): TMPDIR '<absent>' Use of uninitialized value in join or string at test3.pl line 7. I see args '', 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp', 'C:\DOCUME~1\ADMI +NI~1\LOCALS~1\Temp' In test, at end (2): TMPDIR '<undef>'
Just to be sure it wasn't the _use_ of the subroutine arguments, I commented out the printf, and got output
so it is the call itself doing the nasty thing to my mind. Can someone make this make sense to me?In test, at start (1): TMPDIR '<absent>' In test, at end (2): TMPDIR '<undef>'
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Autovivification sucking the life out of me
by Skeeve (Parson) on Oct 14, 2005 at 07:37 UTC | |
by Perl Mouse (Chaplain) on Oct 14, 2005 at 12:34 UTC | |
by shenme (Priest) on Oct 14, 2005 at 18:04 UTC | |
by shenme (Priest) on Oct 14, 2005 at 07:51 UTC | |
by Skeeve (Parson) on Oct 14, 2005 at 08:17 UTC | |
Re: Autovivification sucking the life out of me
by pg (Canon) on Oct 14, 2005 at 06:42 UTC | |
by shenme (Priest) on Oct 14, 2005 at 06:48 UTC | |
by pg (Canon) on Oct 14, 2005 at 06:54 UTC | |
by shenme (Priest) on Oct 14, 2005 at 07:11 UTC | |
A reply falls below the community's threshold of quality. You may see it by logging in. |
Back to
Seekers of Perl Wisdom