- 締切済み
ActivePerl-5.10.0.1004の日本語対応にする方法
超初心者の質問ですみません。 今、Perlの絵本でActivePerlの勉強中ですが use encording"shiftjis"; $a=1; print "はじめは$aでした。\n"; $a=++; print "1増えて$aになりました。\n"; $a=--; print "1減って$aに戻りました。\n"; を実行しても、 Can't locate encording.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib . ) at hello8.pl line 1. BEGIN failed--compilation aborted at hello8.pl line 1. と表示されます。 解消法を教えてください。
- yoshinobu2
- お礼率75% (3/4)
- Perl
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- kabaokaba
- ベストアンサー率51% (724/1416)
>syntax error at hello8.pl line 5, near "++;" >syntax error at hello8.pl line 7, near "--;" ++や--の使い方が間違ってるから. 正しくは $a++; $a--; けど,こういう,increment/decrementは もっとわかってから使いましょう. 素直に $a=$a+1; $a=$a-1; で十分.
勉強中ならなおさらuse encodingなんて使うべきではありません ダーティハックの時だけで十分
お礼
さっそくの返答ありがとうございます。 参考にさせていただきます。
- Werner
- ベストアンサー率53% (395/735)
Perl5.8以降で日本語を扱うなら以下のページが参考になると思います。 結構ややこしいところもあるので 勉強中は日本語使わなくてすむ所では使わないようにして進めた方が楽かもしれません。 Perl 5.8.x Unicode関連 http://www.rwds.net/kuroita/program/Perl_unicode.html WindowsでPerlを使うもんじゃない http://www.aritia.org/hizumi/perl/perlwin.html 2つめのページ内にあるcp932というのはNo.1で言われているWindows-31Jの別名で同じものです。
お礼
早速の回答ありがとうございます。 参考にさせていただきます。 ありがとうございました。
- zxcv0000
- ベストアンサー率56% (111/196)
encording では無く encoding です。 # うまくいかない時、スペルミスを確認するのは基本です。 文字コードの名前ですが、マイクロソフトが『Shift_Jis』と呼んでいるものは、インターネット規格では『Windows-31J』という名前で、encoding もこの名前を認識します。 だから、Windows上のPerlスクリプトなら、正しくは以下になります。 use encoding "Windows-31J"; shiftjis とか Shift_Jis とか書くと、Windowsの機種依存文字が未定義扱いになってしまいます。
補足
zxcv0000さん 回答ありがとうございます。 ご指摘どおり、 use encoding "Windows-31J"; 試してみましたところ、 syntax error at hello8.pl line 5, near "++;" syntax error at hello8.pl line 7, near "--;" Execution of hello8.pl aborted due to compilation errors. このようなエラーが表示されました。 誠に申し訳ございませんがどうすればよいかお教えください。
関連するQ&A
- Text::CSV_XSの設定について
環境 OS Windows XP SP2 Perl v5.8.8 cpanからText::CSV_XSモジュールをダウンロードして そのモジュールをC:/perl/perl/lib/Textに配置しました。 ファイル名 a.pl use Text::CSV_XS; というコードを実行したら Can't locate loadable object for module Text::CSV_XS in @INC (@INC contains: C:/ perl/perl/site/lib C:/perl/perl/lib .) at a.pl line 4 Compilation failed in require at a.pl line 4. BEGIN failed--compilation aborted at a.pl line 4. というエラーが出ました。 他にもファイルがあったのでそれが関係あるのでしょうか?
- ベストアンサー
- Perl
- Can't locate...
こんにちは。Perl初心者で、 ネット上のPerlのサンプルプログラムを動かそうとしましたが 以下のようにエラーがでて実行できません。。 Can't locate Lingua/JA/Romanize/Japanese.pm in @INC (@INC contains: ./ /usr/local/lib/perl5/5.00504/i686-linux /usr/local/lib/perl5/5.00504 /usr/local/lib/perl5 /site_perl/5.005/i686linux /usr/local/lib/perl5/site_perl/5.005 .) at object.cgi line 4. BEGIN failed--compilation aborted at object.cgi line 4. これはどういったエラーで、どうすれば解決しますか。 教えてください。
- 締切済み
- Perl
- ActivePerl 5.8.4 の日本語表示について
ActivePerl 5.8.4 を使っています。 5.8 以降は、 use encoding 'shiftjis'; と書くと日本語も正しく処理してくれるということを聞いていたのですが、以下のプログラム use encoding 'shiftjis'; print "日本語文字列\n"; print STDERR "日本語文字列\n"; を実行すると、 日本語文字列 Wide character in print at p line 3. 譌・譛ャ隱樊枚蟄怜 となってしまいます。つまり、標準出力では問題ないが、標準エラー出力には対応できていないということになります。 これは、現在避けられない不具合なのでしょうか? 解決方法をご存知の方、よろしくお願いします。
- ベストアンサー
- Perl
- モジュールに定義した関数の実行
sample.pmに定義したhello関数をmain.plから呼び出したいと思っています。(sample.pmとmain.plは同じディレクトリに存在)下記のように書いてみたのですが実行したところ以下のようなエラーが出てしまいました。これはどういう対応をすればよろしいのでしょうか? Can't locate sample.pm in @INC (you may need to install the sample module) (@INC contains: C:/Strawberry/perl/site/lib C:/Strawberry/perl/vendor/lib C:/Strawberry/perl/lib) at c:\Perl_prj\main.pl line 2. (main.pl) require 'sample.pm'; hello(); (sample.pm) sub hello { print 'hello'; } 1;
- 締切済み
- Perl
- perl2exeでuse encodingが使えない
下記のようなスクリプトを作成しました。 スクリプト名は test_kanji.pl ---------------- use encoding("shift-jis"); print "表現\n"; ----------------- 上記を実行すると、正しく”表現”の文字が表示されます。 これをperl2exeで実行形式に変換すると 下記のエラーが表示され、期待した結果が得られません。 Converting 'test_kanji.pl' to test_kanji.exe Warning: Can't locate I18N/Langinfo.pm at C:\Perl\lib\encoding.pm line 41 @INC = c:\perl\userlib, C:\Perl\lib, C:\Perl\site\lib, . 又、強引にtest_kanji.exeを実行すると encoding: Unknown encoding 'shift-jis' at C:\Perl\userlib\test_kanji.exe line 1 BEGIN failed--compilation aborted at C:\Perl\userlib\test_kanji.exe line 1. のようなメッセージが表示され、”表現”が表示されません。 perl2exeでuse encodingは使用できないのでしょうか。
- 締切済み
- Perl
- Movable Typeのインストールについて
Movable TypeをWebサーバーに入れ、Movable Typeシステム・チェック [mt-check.cgi]画面でMovable Typeに必要なコンポネントがサーバーに入っていることをチェックしてOKでした。 そしてmt/index.htmlよりインストールを行おうとしたのですが、 Got an error: Unsupported driver MT::ObjectDriver::DBM: Can't locate DB_File.pm in @INC (@INC contains: C:\***\cgi-bin\mt\extlib lib C:/Perl/lib C:/Perl/site/lib .) at lib/MT/ObjectDriver/DBM.pm line 10. BEGIN failed--compilation aborted at lib/MT/ObjectDriver/DBM.pm line 10. Compilation failed in require at (eval 6) line 1. BEGIN failed--compilation aborted at (eval 6) line 1. とエラーが出てしまいます。mt-config.cgiの設定が間違っているのでしょうか? どなたか教えてください。よろしくお願いします。
- ベストアンサー
- ブログ
- Jcode.pmについて
ネット上からダウンロードしてきたCGIプログラム内で、Jcode.pmを使用しているようなのですが、サーバ にUpしたところ、以下の様なエラーが表示されました。 ※1 Can't locate Jcode.pm in @INC (@INC contains: /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl .) at access/accview.cgi line 68. ※2 BEGIN failed--compilation aborted at access/accview.cgi line 68. ちなみに、accview.cgi line 68には use Jcode; と書かれていました。 エラーの原因として、何がありますか? また、その解決法を教えていただきたいです。
- ベストアンサー
- Perl
- Perlからchasenの使い方
windowsで茶筅を使って形態素解析を行いたいのですがエラーが出てうまくいきません。 ■プログラム(cha.pl) #!/usr/bin/perl -w use Text::ChaSen; $value = '私はとても学校が嫌い。'; $res = Text::ChaSen::getopt_argv('cha.pl','-j'); $str = Text::ChaSen::sparse_tostr($value); print "$str"; exit; ■エラー Can't locate loadable object for module Text::ChaSen in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at cha.pl line 3 Compilation failed in require at cha.pl line 3. BEGIN failed--compilation aborted at cha.pl line 3. もし良かったらアドバイスお願いします。 Makefile.plのWriteMakefileには 'LD' => 'c++' を追加しました。
- ベストアンサー
- Perl
- @INCのパスを変更・追加する方法はありますか?
現在Movable Typeの設定を行っておりますが インストール途中に以下のようなエラーメッセージが出力されます。 --- Can't locate MT/Bootstrap.pm in @INC (@INC contains: lib C:/Perl/site/lib C:/Perl/lib .) at X:\hoge\mt\mt.cgi line 12. BEGIN failed--compilation aborted at z:\hoge\mt\mt.cgi line 12. --- 調べてみると、Bootstrap.pmファイルが見つからないよという意味の エラーメッセージだという事がわかりました。 Bootstrap.pmファイルは存在しているのですが、@INCにファイルへのパスが通っていない為、このようなエラーメッセージが起こるのではないかと考えています。 そこで、@INCにパスを追加しようと思ったのですが、出来ませんでした。 コマンドプロンプトから c:\>perl -I <通したいパス> とすれば、@INCの値が更新されるのかと思ったらそういうわけでは無かったようで・・・ どのようにして、パスを追加すればよいのかわからなくなりました。 解決方法がありましたら、お願いいたします。
- ベストアンサー
- Perl
- make 時に標準以外のディレクトリにインストールされたモジュールを見つけるには
perl を /usr/local にインストールし、AppConfig を以下のようにインストールしました。 % perl Makefile.PL PREFIX=/opt/perl % make % make test # make install この結果、AppConfig に依存関係がある Template-Toolkit をインストールしようとした際に AppConfig を見つけられずに以下のようなエラーが出てしまいます。 % perl Makefile.PL PREFIX=/opt/perl % make % make test # make install Can't locate AppConfig.pm in @INC (@INC contains: blib/lib blib/arch /usr/local/lib/perl5/5.8.8/i386-linux /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/i386-linux /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl .) at bin/ttree line 32. BEGIN failed--compilation aborted at bin/ttree line 32. コマンドラインから perl を起動する場合ですと、-I オプションを使えばよいのでしょうが (-I/opt/bugzilla/lib/perl5/site_perl/5.8.8)、Makefile.PL から Makefile を作成する際に、これと同様のことを行う方法はないでしょうか? ダメな場合、Makefile のどこを修正すれば INC にパスを追加できるのでしょうか?
- ベストアンサー
- Perl
お礼
回答ありがとうございます。 ご指摘どおりでした。 ありがとうございました。