sub import { return if $ENV{FIXINIT_PM}; my $class = shift; my @chk = $^C ? '-c' : (); $ENV{FIXINIT_PM} = 1; my @path = split /:/, $ENV{LD_LIBRARY_PATH}; while ( my $dir = shift @_ ) { last if $dir eq "--"; if ( $dir =~ s/^-// ) { if ($dir eq 'all') { @path = (); next; } @path = grep $_ ne $dir, @path; next; } if ( $dir =~ s/^\+// ) { unshift @path, $dir; next; } push @path, $dir; } $ENV{LD_LIBRARY_PATH} = join ":", @path; my %env = @_; $ENV{keys %env} = values %env; exec $^X => @chk, $0, @ARGV; die "Could not exec $^X $0: $!"; } #### =head1 SYNOPSIS # Use before all other use statements # Unset LD_LIBRARY_PATH use FixInit; # Add paths to end of LD_LIBRARY_PATH and set some variables # "--" divides paths and env variables use FixInit qw(libpath1 libpath2 -- env1 value1 env2 value2); # Add paths to beginning of LD_LIBRARY_PATH # (Will get added in reverse order) use FixInit qw(+libpath2 +libpath1); # Remove paths from LD_LIBRARY_PATH use FixInit qw(-libpath1 -libpath2);