Hi, I undef'ed the locale stuff in hints.sh and have not noticed any evil to this point.
# Locales aren't feeling well. #LC_ALL=C; export LC_ALL; #LANG=C; export LANG; d_setlocale=undef; ==Jerry > This was _really_ annoying me to the point of burning effigies of > camels, so with a view to helping any other unwary souls - > > Problem: > After rolling your own installation of perl , when you try to run a perl > > script you get a variation on the following: > > perl: warning: Setting locale failed. > perl: warning: Please check that your locale settings: > LC_ALL = "En_US", > LANG = (unset) > are supported and installed on your system. > perl: warning: Falling back to the standard locale > ("C"). > > Several places on the internet, including the ADC section of the apple > web site, suggest creating a .tcshrc or .bash file containing the > missing variables. This is only a partial solution however, working only > > if you run the script from a terminal window (aka CLI) - perl scripts > run as standalones, cron jobs and so on, still throw up locale errors > because the system environment doesn't have the necessary variable(s) > set > > The solution? > > I got the answer thanks to this page by Bob Dalgleish > http://duke.usask.ca/~dalglb/macosx/Perl_5.6.html > > where it gives an example of a shell script which makes an > environment.plist containing the missing locale variable(s). > > I've turned it into a perl script (written for clarity rather than > compactness) with some extra features which I think might be useful > (like the ability to change the language locale). > > > ==SCRIPT STARTS BELOW THIS TEXT== > #!/usr/bin/perl -w > > # Locale WTK(water torture killer).pl > # Author Robin McFarlane <[EMAIL PROTECTED]> > # > # based on the shell script written by by Bob Dalgleish > # viewable at http://duke.usask.ca/~dalglb/macosx/Perl_5.6.html > # > # This script will look for any missing folders and files in your user > folder, > # needed to kill locale related errors, creating them as need be. > # > # It will also safely add missing locale info to an existing > environment.plist, > # making a back-up of the original called "environment.plist.old" in the > > same folder. > > > > #=========== declare includes ============= > > use strict; > use diagnostics-verbose; > > > #========== declare variables ============= > > my ($TempPath,$path,$flag,$dir,$Missing1,$Missing2); > my (@NewPlist,@OldPlist,@Template,$TempFile,$plist); > my (%DataCheck,$ChangeFlag); > > $path=join ('/', '/Users',$ENV{USER}); > $dir ='.MacOSX'; > $plist='environment.plist'; > @Template=<DATA>; > > print "Checking your current environment set up\n"; > > $TempPath= join ('/',$path,$dir); > if (-e $TempPath){ > print "\t",$TempPath," exists\n"; > }else{ > print "\t",$TempPath," is missing - creating it now\n"; > mkdir $TempPath || die "can't make $TempPath,\n OS says $!"; > } > > > $TempPath= join ('/',$TempPath,$plist); > > if (-f $TempPath){ > > print "\t",$TempPath," exists, checking the locale data\n"; > open(IN, $TempPath)|| die "can't open $TempPath,\n OS says $!"; > @OldPlist=<IN>; > close (IN); > @DataCheck{@OldPlist}=(); > > for (@Template){ > unless (exists $DataCheck{$_}){ > print "\t$_ missing from $TempPath, adding\n"; > $DataCheck{$_}=() ; > $ChangeFlag=1; > > } > @NewPlist=keys(%DataCheck); > if ($ChangeFlag){ > $flag = rename $TempPath,$TempPath.'.old'; > die "can't seem to modify $TempFile, may be permissions > related\n" if $flag; > } > } > > > } else { > print "\t",$TempPath," is missing - creating it now\n"; > @NewPlist=@Template; > $ChangeFlag=1; > } > > if ($ChangeFlag){ > > > open (OUT,">$TempPath") || die "can't print to $TempPath,\n OS > says $!"; > print OUT @NewPlist; > close (OUT); > print "your locale data has been updated - \nany changes will > come > into effect the next time you log into OSX. \n"; > }else { print "No data was changed, any problems you might be > experiencing \nare not connected with your environment.plist\n"; } > > __DATA__ > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE plist SYSTEM > "file://localhost/System/Library/DTDs/PropertyList.dtd"> > <plist version="0.9"> > <dict> > <key>LANG</key> > <string>us_ENG</string> > <key>LC_ALL</key> > <string>C</string> > </dict> > </plist> > ==SCRIPT STARTS ABOVE THIS TEXT== >