|
perlの使い方なのですが、 日付と時間を表示する簡単なものを作りました。 実行したら動いたのですが、ところが、下記のような メッセージが出ました。 ------------------------------------------------------------ perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LC_ALL = (unset), LANG = "ja_JP.PCK" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). ------------------------------------------------------------ このメッセージを表示させないようにするには、どうしたらよいか 教えてください。 環境は、Solari8 以下、perlのシェルスクリプト ------------------------------------------------------------ #!/usr/local/bin/perl # ($day, $mon, $year) = (localtime(time))[3..5]; printf("Today : %04d/%02d/%02d\n",$year+1900,$mon +1,$day); ($sec, $min, $hour) = (localtime(time))[0..2]; printf("Time : %02d:%02d:%02d\n",$hour,$min,$sec); ------------------------------------------------------------ |
|
>>4889 68user なるほど。ここらへんはzipやrarなどと比べると不便ですね。 ありがとうございました。 |
|
>>4891 べた 「perl: warning: Setting locale failed」で検索すれば出てきますが、 環境変数 PERL_BADLANG を設定することで回避可能です。詳細は検索願います。 |
|
>4889 ありがとうございます。ヤフーのオークション で見てみます。 |
|
>>4893 68user ありがとうございます。 perlのスクリプトを実行時のみ有効にしたいのです。 perlのスクリプト内で記述する場合はどのように 定義すればよいのですか。 |
|
>>4895 べた perl コンパイルの際の Configure 時に設定する方法があります。 それが無理なら #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl と wrapper を作るか、env コマンドで #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl とする手もあります。 |
|
>>4896 68user ありがとうございます。 #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl # とperlのスクリプト内に記述して、実行したのですが、 処理がとまったというか、何も応答が返ってきません。 |
|
>>4897 べた なるほど FreeBSD 5.2.1-RELEASE では動きますが、Linux では確かに 無限ループしてますねぇ。 > #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl これは FreeBSD 5.2.1-RELEASE では /usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl ./hoge と解釈されますが、Linux や Solaris では /usr/bin/env "PERL_BADLANG=0 /usr/local/bin/perl" ./hoge となるため PERL_BADLANG="0 /usr/local/bin/perl" という環境変数が設定されつつ /usr/bin/env ./a が実行されるものの、./hoge のシェバング行にはまた同じ内容が 書かれているため、永遠に execve("./a"); が実行されるということですね。 参考: http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0 の Tips.2 というわけで env コマンドを使うやり方は移植性がありませんでしたが、 #!/bin/sh PERL_BADLANG=0 /foo/bar/baz.pl なら動くと思います。Linux では動きました。 |
|
>> 4898 > #!/bin/sh > PERL_BADLANG=0 /foo/bar/baz.pl >なら動くと思います。Linux では動きました。 で動きました。 色々とありがとうございました。 |
|
さきほどお問い合わせページよりご指摘いただきました、ジャンル一覧リンク切れの件、 修正しました。ご指摘ありがとうございます>連絡いただいた方 |
|
2年半ぶりの人材募集です。 http://x68000.q-e-d.net/~68user/tmp/job2.html |
|
こんにちわ。 findコマンドについて教えてください。 ■要件 カレントディレクトリに存在する31日以前のファイル&ディレクトリの削除を実施したい ■コマンド find ./ -mtime +31 -exec ls {} \; -exec rm -r {} \; >> test.log ■結果 ./20070101.trc find: ./aaa: No such file or directory ■質問1 カレントディレクトリに削除対象となる日付のファイル20070101.trcとディレクトリaaaを配置しています。 削除ファイルの一覧を取得したいため-exec ls {} \;を使用したのですが、 ログには./20070101.trcしか記載がありません。 ディレクトリも表示させるには何かオプションが必要なのでしょうか? ■質問2 実行結果としては削除は行われているのですが戻り値がエラーとなっています。 find: ./aaa: No such file or directoryの部分を指していると思うのですが、 削除後にfindしているように見受けられますがこのエラーの出力原因はなんでしょうか? 1と2の解決方法がありましたら教えてください。 宜しくお願いします。 |
|
>>4902 TKC まず、-exec の代わりに -ok を使って何が実行されているか確認しましょう。 > ディレクトリも表示させるには何かオプションが必要なのでしょうか? ./aaa/ の中身が空ではないですか? 空であれば ls ./aaa しても何も 表示されないと思います。 > 削除後にfindしているように見受けられますがこのエラーの出力原因は > なんでしょうか? find はディレクトリを下降してファイルを探しますが、おそらく ディレクトリを削除した後にそのディレクトリに下りようとしている のではないでしょうか。-prune を組み合わせれば下りないように できるかもしれません (試していません)。 |