#!/usr/bin/perl package Env::Tie; use strict; use Tie::Hash; our @ISA = qw/Tie::StdHash/; sub TIEHASH { bless $_[1] , $_[0] } sub FETCH { $_[0]->{$_[1]} . '---BWUBUBWU' } # The '---BWUBUBWU' of course being # dynamic generated content package Test; use strict; sub print { print 'env home =', $ENV{HOME}, "\n" } package main; use strict; print "Hic sunt leones\n"; print 'env home =', $ENV{HOME}, "\n"; print "lets go\n"; my %self = %ENV; tie %ENV, 'Env::Tie', \%self; print "tied ENV\n"; print 'env home =', $ENV{HOME}, "\n"; print "lets try it in an other package\n"; Test::print(); print "lets fork perl\n"; system( 'perl', '-e', q{print 'env home =', $ENV{HOME}, "\n"} ); print "lets fork bash\n"; system( 'bash', '-c', q{echo $HOME} ); print "done\n";