my $tmpdir; for (qw(TMPDIR TMP TEMP)) { next unless $tmpdir = $ENV{$_}; last if -d $tmpdir; die "Invalid temporary directory $tmpdir from \$ENV{$_}\n"; } $tmpdir ||= "/tmp"; # if this is busted, you got troubles...