package Env; =head1 NAME Env - Perl module that imports environment variables =head1 DESCRIPTION Perl maintains environment variables in a pseudo-associative-array named %ENV. For when this access method is inconvenient, the Perl module C allows environment variables to be treated as simple variables. The Env::import() function ties environment variables with suitable names to global Perl variables with the same names. By default it does so with all existing environment variables (C). If the import function receives arguments, it takes them to be a list of environment variables to tie; it's okay if they don't yet exist. After an environment variable is tied, merely use it like a normal variable. You may access its value @path = split(/:/, $PATH); or modify it $PATH .= ":."; however you'd like. To remove a tied environment variable from the environment, assign it the undefined value undef $PATH; =head1 AUTHOR Chip Salzenberg =cut sub import { my ($callpack) = caller(0); my $pack = shift; my @vars = @_ ? @_ : keys(%ENV); foreach (@vars) { tie ${"${callpack}::$_"}, Env, $_ if /^[A-Za-z_]\w*$/; } } sub TIESCALAR { bless \($_[1]); } sub FETCH { my ($self) = @_; $ENV{$$self}; } sub STORE { my ($self, $value) = @_; if (defined($value)) { $ENV{$$self} = $value; } else { delete $ENV{$$self}; } } 1;