#perl bytes.pmがdeprecatedになった件
@hio 「bytes.pmをデバッグ以外で使おうと思ったのだとしたら,そりゃあんたPerlの文字列モデルについて何か勘違いしてるYO!」って書いてありますし,かなり強い理由っぽいですが…。
2010-02-23 15:34:49しかし、初心者が perl5 の文字コード処理モデルを理解せずに bytes プラグマを多用するケースはありそうなので、まあ妥当
2010-02-23 15:38:36perlunifaqによれば「use bytes -- Don't use it. (snip) Just forget about it.」だそうな。
2010-02-23 15:39:07@__gfx__ まぁ正論ですよね。いいかげんまざって壊れたらunicode使ってない方がわるいっていわれてもしかたない?・x・;
2010-02-23 15:42:57うーむ、 use bytes しなくても bytes::length とか使えるようにするのかなあ。ちなみに utf8::* はuse しなくても使える<@__gfx__: ええ!?bytes.pmってdeprecatedになるの!?
2010-02-23 15:44:53日本の perl programmer のみなさんもだいぶ perl5 の utf8 rule になれてきてるし。ぼちぼち bytes.pm なしでも生きていけそう
2010-02-23 15:45:03そういえばPlack::Util::content_lengthはlength()をそのまま使っているけど,これはbytes::length()じゃなくても大丈夫なのかな。
2010-02-23 15:47:12@dankogai bytes::length depends on internal utf8 flag so it's dangerous to use for latin1 chars - hence deprecated, that's my understanding
2010-02-23 15:47:28@__gfx__ PSGI ではバイト列を渡すのが仕様なので (Lint でチェック) bytes::length をつかうのはまちがいです
2010-02-23 15:48:17@__gfx__ たとえば $body に utf-8 フラグ付きの文字を渡すとsyswriteでクラッシュするPSGIサーバ実装もあるけど、これはこれで問題ありません。アプリケーションがバイト列にしないのが悪いです。
2010-02-23 15:49:37@miyagawa てことは結局,PSGIアプリではutf8-flaggedかどうかは常に意識しなきゃいけないってことすかね。
2010-02-23 15:52:17@__gfx__ てか基本的に入出力がともなうところでは誰かしらが decode/encode しなくてはならないのはさけられない
2010-02-23 15:54:04@__gfx__ や、外に吐くときは常にencodeする、アプリ内では常にdecodeされた状態(utf-8 flagged)の文字列にする、というのが基本だからPSGIだから、とかそういうのは関係ないかと。
2010-02-23 15:54:45@__gfx__ That's something frameworks should ensure.
2010-02-23 15:54:47@lestrrat and that's why encoding/decoding in middleware is dangerous!
2010-02-23 15:55:50@lestrrat and that's why encoding/decoding in middleware is dangerous!
2010-02-23 15:55:50@tokuhirom @miyagawa @lestrrat なるほど,そうでした。「あとは良しなに」的な処理はフレームワークの仕事でした!
2010-02-23 15:56:40