http://www.perlmonks.org?node_id=1007524


in reply to Who modifies $ENV{PATH}?

You could try adding the following right at the top of your script. (Even add it before use strict - before everything else except perhaps the #! line.)

BEGIN { package Tie::Env::Warn; use Carp qw(cluck); use Tie::Hash; our @ISA = 'Tie::StdHash'; sub STORE { my ($self, $key, $value) = @_; cluck "Modification of \$ENV{$key}!"; $self->SUPER::STORE($key, $value); } tie %ENV, __PACKAGE__; };

That will print out a warning including a stack trace (which shows line numbers, etc) whenever %ENV values are assigned. If that doesn't help, then you could also try hooking the DELETE and CLEAR methods (the example above just hooks STORE).

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'