jwatch.jpをHTTP::Engineで
いまはペライチなのでぐちゃっと書いてみる。
Wide character in print at /usr/lib/perl5/site_perl/5.8.8/HTTP/Engine/ResponseWriter.pm line 68, <DATA> line 16.
60 sub _write { 61 my($self, $buffer) = @_; 62 63 unless ( $self->{_prepared_write} ) { 64 $self->_prepare_write; 65 $self->{_prepared_write} = 1; 66 } 67 68 print STDOUT $buffer; 69 }
→なんか普通にEncode祭りか。→動いてないけどとりあえずコミった。→ http://coderepos.org/share/browser/websites/jwatch.jp/trunk/misc/jwatch_http-engine.pl?rev=11858 → こんなんでいいんかな?→面倒なのでname_i18nで逃げる。→String::TTの使い方をなんとかする。→わかったわかった!→http://coderepos.org/share/browser/websites/jwatch.jp/trunk/misc/jwatch_http-engine.pl?rev=11874 → うごいたうごいた! utf8関連はどうすっかな。→String::TTはいいなぁ。→middlewareでやれと言われたのでmiddlewareで何ができるのか勉強する → HTTP::Engineでは
31 sub load_middleware { 32 my ($class, $middleware) = @_; 33 34 require UNIVERSAL::require; 35 36 my $pkg; 37 if (($pkg = $middleware) =~ s/^(\+)//) { 38 $pkg->require or die $@; 39 } else { 40 $pkg = 'HTTP::Engine::Middleware::' . $middleware; 41 unless ($pkg->require) { 42 $pkg = 'HTTPEx::Middleware::' . $middleware; 43 $pkg->require or die $@; 44 } 45 } 46 47 if ($pkg->meta->has_method('setup')) { 48 $pkg->setup(); 49 } 50 51 if ($pkg->meta->has_method('wrap')) { 52 HTTP::Engine::RequestProcessor->meta->add_around_method_modifier( 53 call_handler => $pkg->meta->get_method('wrap')->body 54 ); 55 } 56 }
→などと言っていたらかんかんのMiddleware::Encodeがはじまった!→出力時のencodeもしてくれるらしい!→そうすると↓これもなおるらしい。
Wide character in print at /usr/lib/perl5/site_perl/5.8.8/HTTP/Engine/ResponseWriter.pm line 68, <DATA> line 16.
→今のバージョンで一応日本語の出力も無問題。↑これは出るけど→H::E::Interface::ModPerlができたら入れ替えよう。