Perl で、RSS で配信されたエントリーの日付を処理する

HTTP::Date クラスを使うと RSS で配信されたエントリーの日付 (dc:date) を変換してくれる。この場合、RSS のソースによって米国から日本のニュースにアクセスした場合などは、時差 (タイムゾーン) を考慮する必要があるため注意する。 使用するクラス
use HTTP::Date;
#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Date;

# 初期化
my $html;
my $timezone = 'JST';
my $url    = 'https://www.yoursite.com/index.rdf';
my $rss    = new XML::RSS;
my $proxy  = new LWP::UserAgent;       # UseAgent の作成
my $req    = new HTTP::Request(GET=>$url);
my $res    = $proxy->request($req);    # $url にアクセスする
my $xml    = $res->content;            # コンテンツ (この場合は RSS/XML) を取得

# RSS を解析
eval {
    $rss->parse($xml);
};

if($@) {
    # $rss->parse が失敗したとき
}

# @{$rss->{items}} に、RSS のすべてのエントリー (item) が入る
foreach my $item ( @{$rss->{items}} ) {

    my $date        = HTTP::Date::str2time($item->{dc}->{date}, $timezone);

    $html    .=    qq|<a href=$item->{link}>$item->{title}</a><br>\n|; # タイトルをリンクつきで出力
    $html    .=    qq|$description<br>|    if $item->{description};    # 概要 (description) を出力
    $html    .=    qq|[<a href=$item->{link}>続きを読む</a>]<hr size=1>\n|;
}

print $html;

1;
トラックバック URL: https://perltips.twinkle.cc/trackback/34