On Tue, 1 Feb 2005, Stas Bekman wrote: > colin_e wrote: > > Geoff, > > I ran into some weirdness in this area (on a Win XP > > machine running Apache 2.0.52) that seemed to be related > > to using lowercase environment variable names. It > > looked as if PerlSetEnv uppercased the variable names, > > whereas SetEnv just ignored vars with lower case names. > > > > Sounds weird I know, and I didn't pin it down exactly, > > but try uppercase variables and see if this works for > > you. > > That's probably due to the differences of how perl and > Apache interpret environ on win32. mod_perl really calls > perl's funcs to get the env. I'm sure if you try that on > the command line (plain perl) you will see the same > behavior. something like: > > setenv foo bar (whatever it is on win32) > perl -le 'print $ENV{FOO}' > > on unix that won't work, but on win32 it should print 'bar'.
That's right, Stas - on Win32, C:\> set foo=bar C:\> perl -le "print $ENV{FOO}" prints "bar". > I believe Randy has mentioned this before. > > How does mp1 deals with that? > > Randy? There is a difference in this respect between mp1 and mp2. For example, with a registry script that has print "Foo = $ENV{Foo}<BR />"; print "FOO = $ENV{FOO}<BR />"; print "foo = $ENV{foo}<BR />"; one obtains: - under Apache1/mp1, SetEnv Foo Bar SetEnv FOO BAR yields Foo = BAR FOO = BAR foo = BAR whereas PerlSetEnv Foo Bar PerlSetEnv FOO BAR yields Foo = BAR FOO = BAR foo = BAR So under mp1, SetEnv and PerlSetEnv behave the same, as far as case goes. - under Apache2/mp2, SetEnv Foo Bar SetEnv FOO BAR yields Foo = bar FOO = bar foo = bar whereas PerlSetEnv Foo Bar PerlSetEnv FOO BAR yields Foo = BAR FOO = BAR foo = BAR So the behaviour of SetEnv changed from Apache-1 to Apache-2, as far as Win32 case goes, while PerlSetEnv maintained the same behaviour from mp1 to mp2. I suppose one could argue that we should change PerlSetEnv under mp2 to lower-case things, so as to be consistent with SetEnv? -- best regards, randy