Can we set a variable used in a Perl script as env

2020-02-07 05:41发布

问题:

I have a Perl script which has a variable like my $name. Can we set the contents of $name as an environment variable which we can import and use in other files?

I tried like $ENV{NAME}=name, but this is not working.

回答1:

If you want to affect the environment of your process or your child processes, just use the %ENV hash:

$ENV{CVSROOT}='<cvs>';

If you want to affect the environment of your parent process, you can't. At least not without cooperation of the parent process. The standard process is to emit a shell script and have the parent process execute that shell script:

#!/usr/bin/perl -w
print 'export CVSROOT=<cvs>';

... and call that script from the shell (script) as:

eval `myscript.pl`


回答2:

Environment variables are specific to a process. When a child process is spawned, it inherits copies of its parent's environment variables, but any changes it makes to them are restricted to itself and any children it spawns after the change.

So no, you can't set an environment variable for your shell from within a script you run.