FreeBSD/Perl

Perl

標準インストールでインストールした場合、perlを実行するたび
に警告メッセージが発せられるのを抑止する。

こんな警告メッセージが出ます。

	perl: warning: Setting locale failed.
	perl: warning: Please check that your locale settings:
		LC_ALL = (unset),
		LANG = "ja_JP.ujis"
	    are supported and installed on your system.
	perl: warning: Falling back to the standard locale ("C").

環境

OS	FreeBSD5.4
Perl	Perl5.8.6

対処

環境変数 PERL_BADLANG を設定することで抑制することができる

  • csh 系: setenv PERL_BADLANG 0
  • sh 系: PERL_BADLANG=0; export PERL_BADLANG
  • もしくは ./Configure -U d_setlocale してから make しましょう.
$ vi ~/.cshrc
------------追加分------------------
setenv  PERL_BADLANG 0
------------追加分------------------

$ vi ~/.bash_profile
------------追加分------------------
PERL_BADLANG=0; export PERL_BADLANG
------------追加分------------------

BIOS画面での時間と、OS内の時間が違っていた場合こんなエラーがでてperlがうまく使えません。

==> Your Makefile has been rebuilt. <==
==> Please rerun the make command.  <==
false
*** Error code 1

BIOSの時間を合わせて、perlを入れ直せばOK

# cd /usr/ports/lang/perl5.8
# make deinstall
# make reinstall

原因は?

(多分) perlは起動時に LC_ALL, LC_CTYPE, LANG を検査する。
上の例では ja_JP.eucJP が設定されているので、
/usr/share/local/ja_JP.eucJP 以下を捜査するが、
対応するファイルが LC_CTYPEしかない。

% ls /usr/share/locale/ja_JP.eucJP
LC_CTYPE

試しに、LC_ALL, LANGを unsetenv して試すとwarningは出ない。

黙らすには3つの方法がある。

1番 /usr/share/locale の適切な場所に LC_ALL, LANGのカタログを作る
2番 perlとしては LC_CTYPEだけ設定してればよいので、他をunsetenvする
3番 % setenv PERL_BADLANG 0