#!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} ? '' : ! defined $ENV{TMPDIR} ? '' : $ENV{TMPDIR}; see_args( @ENV{qw(TMPDIR TEMP TMP)} ); warn sprintf "In test, at end (2): TMPDIR '%s'\n", ! exists $ENV{TMPDIR} ? '' : ! defined $ENV{TMPDIR} ? '' : $ENV{TMPDIR}; #### In test, at start (1): TMPDIR '' 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\ADMINI~1\LOCALS~1\Temp' In test, at end (2): TMPDIR '' #### In test, at start (1): TMPDIR '' In test, at end (2): TMPDIR ''