Perlコーディング初心者質問スレ Part 53
498 :
nobodyさん:
何故か「ー」の置換が出来ません。
他の日本語や、逆(〜をーにする)は出来ます。何故なんでしょうか?
print "content-type: text/html\n\n";
$str = "ボール";
$out = "ー";
$in = "〜";
$str =~ s/$out/$in/;
print $str;
499 :
nobodyさん:2006/12/25(月) 13:52:39 ID:ClYkzmks
use Foo;
use ...;
use ...;
と、複数のpmファイルをuseしたのですが、先頭行のuseだけにエラーが出ます。
Can't locate Foo.pm in @INC (@INC ...
ちゃんとFoo.pmは存在するし、他の行のuseにはエラーが出ないのですが・・・
このエラー文は、モジュールがインストールされていないという意味のほかに、なにか意味はあるのですか?
500 :
499:2006/12/25(月) 13:58:43 ID:ClYkzmks
何度もすみません。
use Foo;
use Hoge;
use ...;
use ...;
だとFoo.pmに関して、
use Hoge;
use Foo;
use ...;
use ...;
だとHoge.pmに関してしてエラーが出ていたようです。
@INCの検索パスにそれらのファイルが含まれていないということでしょうが、ちゃんとそのディレクトリに置いてあるんです\(^o^)/オワタ
use lib しなけりゃエラーが出て当然だと思いますが・・・
503 :
499:2006/12/25(月) 14:29:36 ID:ClYkzmks
504 :
499:2006/12/25(月) 14:36:15 ID:ClYkzmks
/lib/Common/Cookie.pm にしてますか?
506 :
499:2006/12/25(月) 14:51:36 ID:ClYkzmks
>>505 はい、呼び出し側との相対パスは./lib/Common/Cookie.pmです。
508 :
nobodyさん:2006/12/25(月) 19:38:47 ID:ClYkzmks
\r\n、\r、\nは<BR>に変換するけど、<BR>はどの改行コードに戻せばいいの?
対象のOSによって変わると思うんだけど・・・
\x0d\x0a|\x0d|\x0a
お好きなのをどうぞ
その「お好きなの」をどれにするかで迷ってんじゃね?
511 :
nobodyさん:2006/12/25(月) 19:57:38 ID:ClYkzmks
はい。
プラットフォームによって改行コードを勝手に決めてくれたりは出来ないんですか?
>>492 記号類はメタ文字 (特殊文字) になるものがあるので、よく分からなければ \Q$var\E しておくのが良いです。Shift_JISの場合、漢字の一部にメタ文字が含まれる可能性があるので、思わぬところでエラーとなります。
>>495 要件に「大文字小文字を区別するかどうか」が含まれていないため、必要に応じて i 修飾子を付けてください、という意味です。
>>498 文字コードはShift_JISを使っていますね。「ー」の2文字目は「[」であるため、バイト単位で処理する場合にはそれがメタ文字として見なされます。
ですから、以下のような方法で回避する必要があります。
1.
>>501 EUC-JPを利用する。
2.
>>507 \Q$out\E とする。
3. Jperlを利用する。(今となってはお勧めできない)
4. 入出力をきちんとハンドリングして、内部では常にutf-8フラグつきの文字列として扱う。(多少面倒だが漢字も1文字単位で処理できるのでお勧め。「Perl utf8」でググれば参考サイトは沢山出てきます。)
5. 先頭で use encoding "Shift_JIS"; する。(あまりお勧めできない)
他にあったっけ?
# Shift_JISでは /セーラープルート/ がエラーになるので悲しい。