06/10/09 00:26:29 b33Q2pbi
まぁ、テキトウにまとめ。
しなくてもいいだろうが、スレつかっておいて自己解決して放置っつースタイルが嫌いなので。
俺の場合。
出力をXHTMLに準拠させたいが、ファイルの先頭でXML宣言をするとIEで厄介なので、それを避けるために出力をUTF8にしたかった。
そんなときにPerl5.8は内部処理とかUTF8にしたぞ的なことを知ったので、use utf8;とかしてコードを書いていたわけだが、
UTF8のマルチバイト文字列をcrypt関数の引数として与えるとエラーが出るという問題にあった。
まぁ、crypt使う理由が2ch互換のトリップを生成することだったわけで、そのときにUTF8でcrypt使用としてた辺りがあほなんだが、
1日考えるのやめてカラオケとか逝ってたら、脳みそすっきりしてこのことに気づいたので解決した。
そんでUTF8→SJIS変換したら、すんなり成功した。
参考までにソース載せると
package パッケージ名;
use utf8;
use Encode;
return 1;
sub makeTrip{ # 引数 = \$tripkey(utf8)
my $tripkey = $_[0];
my $salt;
$$tripkey = encode('shiftjis', $$tripkey);
$salt = substr($$tripkey.'H.',1,2);
$salt =~ s/[^\.-z]/\./go;
$salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$$tripkey = crypt($$tripkey,$salt);
$$tripkey = substr($$tripkey,-10);
return;
}