Ashish Sharma
Ashish Sharma

Reputation: 1635

Can we set a variable used in a Perl script as environment variable?

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.

Upvotes: 2

Views: 5466

Answers (2)

Kevin
Kevin

Reputation: 56059

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.

Upvotes: 2

Vijay
Vijay

Reputation: 67221

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`

Upvotes: 8

Related Questions