Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Using System to read mixed cased environment variables on Windows

Reply
Thread Tools

Using System to read mixed cased environment variables on Windows

 
 
Thierry
Guest
Posts: n/a
 
      06-27-2008
On Windows XP Pro 32 bit, if I want to output environment variables
PYTHON or ProgramFiles, I use the set command which output the
following:

C:\set PYTHON
PYTHON=C:\Python24\python.exe
C:\set ProgramFiles
ProgramFiles=C:\Program Files

If I used Perl 5.003_07 and use the system subroutine to show the
environment variables, I get the following. Perl script is:

system("set PYTHON");
system("set ProgramFiles");

Output is:
PYTHON=C:\Python24\python.exe
PROGRAMFILES=C:\Program Files

You'll notice that through system, the environment variable
ProgramFiles is all in upper case. Is there a way to preserve the
mixed case of the environment variable through system(...)?
 
Reply With Quote
 
 
 
 
Ron Bergin
Guest
Posts: n/a
 
      06-27-2008
On Jun 27, 10:00 am, Thierry <(E-Mail Removed)> wrote:
> On Windows XP Pro 32 bit, if I want to output environment variables
> PYTHON or ProgramFiles, I use the set command which output the
> following:
>
> C:\set PYTHON
> PYTHON=C:\Python24\python.exe
> C:\set ProgramFiles
> ProgramFiles=C:\Program Files
>
> If I used Perl 5.003_07


That's a fairly old version. You should upgrade to at least 5.8

> and use the system subroutine to show the
> environment variables, I get the following. Perl script is:
>
> system("set PYTHON");
> system("set ProgramFiles");
>

There's no reason to use a system call. Your environment variables
are already stored in the %ENV hash.

print $ENV{'ProgramFiles'};
 
Reply With Quote
 
 
 
 
sisyphus
Guest
Posts: n/a
 
      06-28-2008
On Jun 28, 4:00*am, Thierry <(E-Mail Removed)> wrote:
> On Windows XP Pro 32 bit, if I want to output environment variables
> PYTHON or ProgramFiles, I use the set command which output the
> following:
>
> C:\set PYTHON
> PYTHON=C:\Python24\python.exe
> C:\set ProgramFiles
> ProgramFiles=C:\Program Files
>
> If I used Perl 5.003_07 and use the system subroutine to show the
> environment variables, I get the following. *Perl script is:
>
> system("set PYTHON");
> system("set ProgramFiles");
>
> Output is:
> PYTHON=C:\Python24\python.exe
> PROGRAMFILES=C:\Program Files
>
> You'll notice that through system, the environment variable
> ProgramFiles is all in upper case. *Is there a way to preserve the
> mixed case of the environment variable through system(...)?


I find that case is preserved with perl 5.6.2, 5.8.8 and 5.10.0:

C:\>set MyTest=C:\MyTest

C:\>set MyTest
MyTest=C:\MyTest

C:\CVS>perl -e "system(\"set MyTest\")"
MyTest=C:\MyTest

C:\CVS>set MITEST=C:\MiTest

C:\CVS>perl -e "system(\"set MiTest\")"
MITEST=C:\MiTest

Not quite sure why you get the behaviour you reported ... perhaps it
is just that antiquated version of perl you're running. I guess you
could update your perl and see if the behaviour changes. (Though as
Ron Bergin has already indicated, there are better ways of accessing
the environment variables anyway.)

Cheers,
Rob
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Embedded Python 3 porting issues when passing FILE* toPyRun_SimpleFile() in Windows mixed-compiler environment Deron Meranda Python 0 10-05-2012 04:13 AM
Switching to ASP.NET 2 cased exception Shimon Sim ASP .Net 6 10-13-2010 10:46 PM
special cased? Roger Pack Ruby 8 12-22-2009 11:08 AM
re-cased server philo Computer Support 1 04-01-2007 01:00 AM
Reading Windows (NT/2000/XP) system and user environment variables Jim Potts Python 3 10-03-2003 08:20 AM



Advertisments