Perlをひさびさに使って、みごとにはまる。

しかもつまらないことで・・・orz

文字コード
EUCではなくSJISのまま日本語を使おうとして失敗。

またもや、&jcode::sjis2euc 〜 &jcode::euc2sjis のお世話に。
jperl の簡単さが懐かしい・・・。

正規表現のeオプションで関数呼び出しにも引数がうまく渡せず、手間取る。

$string =~ s/hoge/&foo(\1)/eg;
としてうまくいかず。
e指定子は評価の順番を変えるらしく
$string =~ s/hoge/&foo($1)/eg;
とする。
一応、動いてくれたのだけど、文字化け発生orz
今度はe指定子にg指定子を併用したのが原因みたい。
1 while ($string =~ s/hoge/&foo($1)/e);
として事なきを得た。。

ファイルの読み込みで失敗。

ファイルを一度に読み込むために
$/ = '';
$string = ;
としていたら、ファイルの\x0a\x0aの箇所までしか読めない。
undef $/;
と指定した。$/ = ''; は空文字になっていないみたい。
そういえば、binmode(FH); でバイナリモードで読み込めばよかったのかorz

その後、テキストをバイナリモードでも改行コード単位で読み込むのを確認。
改行コードが変換されないのはよいけれど。

改行コードの変換で失敗。

\x0a を \x0d\x0a に変換したら \x0d\x0d\x0a になる。
原因はテキストモードのままファイルをDOSに書き込んだこと。
binmode(FH);
でバイナリモードで読み書きすればいい。

失敗の連続。