XML::RSSで取ってきてHTML::Templateで出力するのメモ
LWPでダウンロードした文字列を、
utf8::encode($content)
しないと文字化けする。
use strict; use warnings; use HTML::Template; use LWP::UserAgent; use XML::RSS; use CGI qw/:standard/; #HTTP通信でダウンロード my $ua = LWP::UserAgent->new; my $result = $ua->get('http://hogehoge.hoge.hoge/index.rdf'); my $content = $result->content; #UTF8フラグを落とす utf8::encode($content); #RSSパーズ my $rss = new XML::RSS; $rss->parse( $content ); my $hoge; foreach my $item (@{$rss->{'items'}}) { $hoge = $item->{'title'}; } my $html = HTML::Template->new( filename => 'hoge.tmpl' ); $html->param( 'HOGE' => $hoge ); print header(-charset=>'utf8'); print $html->output;
なお、tmplファイルはUTF8で保存されているとする。
ついでに、テンプレートで
foreach $hoge (@hoges){ my $item = { FOO => "foo".$hoge, BAR => "bar".$hoge, BOO => "boo".$hoge, }; push( @items, $item ); } #さらに[]でかこんであげる my $loopobj= [@items]; my $html = HTML::Template->new( filename => 'hoge.tmpl' ); $html->param( 'ITEMS' => $loopobj );
-
- -
5/27 【追記】いろいろバグっていたので修正