in reply to Environment Variable

my %Env = ('PPA_CURRENT_PROJECT' => 'D:\Projects\CurrentProject' => 'Directory', ...

Hashes store and are initialized from key-value pairs, not triples.  I.e., you probably rather want a data structure like this:

my %Env = ('PPA_CURRENT_PROJECT' => [ 'D:\Projects\CurrentProject' => +'Directory' ], ...

or

my %Env = ('PPA_CURRENT_PROJECT' => { value => 'D:\Projects\CurrentProject', type => 'Directory' }, ...

With the latter, you could, for example, access the type using

$Env{PPA_CURRENT_PROJECT}{type}