- 135 名前:130 mailto:sage [2008/04/15(火) 02:26:02 ID:???]
- >>133
あれ、ちゃんと動きましたか? うちでは昼間とは別のPC(PerlのVerは同じ)でやってみたけど、やっぱり例のWindowsダイアログが出て落ちる。 で、いろいろあがいてみたところ、上では、再帰ではないっぽいこと言ったけど、やっぱり再帰に問題ありかと。 特にif($num>=20)のところで、$1と$2を同じ関数に再帰してるとこで、次の正規表現マッチで$1$2あたりが壊れるんではないかと。 (ちなみに、これまたCentOS4,Perl-5.8.8-5.rpmだと期待通りに動く) 上で再帰ではないと思ったのは、あのスクリプトを、use utf8;とbinmode関係コメントアウトして実行してみると、 (当然tr/123.../のところで文字列がぶっ壊れるけど)、最後まで落ちずに走ることと、 以前に正規表現($1$2や$'$`$&も)使いまくりで、さらに6-7段ぐらいネストした関数書いた時も、期待通りに動いてくれたんで、 ちゃんと覚えてくれてるものかと思ってた。これからは、どうやらこれを改めないといけないようだ。 > # CP932 な環境で binmode(STDIN, ":utf8") って考えたこと自体がないのでよくわからない。 自分は、Win上でもtextは基本的にUTF-8で保存してるもんで、(本番環境がLinuxなのもあるけど)ワンライナーっぽく書くときは、 コードの中でopenやら、encode(decode(...))やら書くのメンドいんで、perl script.pl < infile.txt > puts.txt みたな感じを多用してます。 ちなみに、向こうのコードをopen(IN...)とかでやっても、ウチの環境ではやっぱりperl.exeが落ちるのは変わらない。
|

|