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==
> 

Reply via email to