メモ: 2008年1月アーカイブ

XML::RSSを使ってRSSを出力する方法です。
文字化けしたりエラーが出たり、半日格闘しました。
結局、下記のようにスクリプトを書いてutf8で保存するとうまく行きました。

#!/usr/bin/perl

use strict;
use utf8;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

print "Content-type: application/rss+xml\n\n";

use XML::RSS;
my $rss = XML::RSS->new({version => "2.0" , encode_output => 0});
$rss->channel(
title => "RSSテスト",
link => "http://your-domain.com/foo",
description => "XML::RSS の出力テスト",
);
$rss->add_item(
title => "1件目の記事のタイトル",
link => "http://your-domain.com/bar",
description => "1件目の記事の解説",
);

$rss->add_item(
title => "2件目の記事のタイトル",
link => "http://your-domain.com/buz",
description => "2件目の記事の解説",
);

print $rss->as_string;

参考:
Perl 5.8でUTF-8の文字コードを扱う
CSV > RSS 変換サンプルスクリプト

Windows XPにActivePerl( perl v5.10)を入れた状態で、XML::RSSモジュールをインストールしようとすると、失敗します。
①CPANモジュールを使った場合

C:\>cpan
cpan> install XML-RSS
...メッセージがごにょごにょ出て、最後はエラー


②PPMを使った場合
 C:\>ppm install XML-RSS 
ppm install failed: Can't find any package that provides XML-RSS


②のエラーを解決する方法を説明します。

エラーの原因
ActivePerlをインストールした時点で、PPMのレポジトリ(モジュール群が置かれているインターネット上の場所)は、ActiveState社のURLしか登録されていない。このサーバには、XML::RSSモジュールが置かれていないため。
解決方法
レポジトリに、winnipeg大学のURL (perl 5.10の場合、 http://cpan.uwinnipeg.ca/PPMPackages/10xx/ ) を追加しましょう。

C:\>ppm rep add "winnipeg" "http://cpan.uwinnipeg.ca/PPMPackages/10xx/"
 C:\>ppm rep          ← レポジトリ一覧を確認 
 1 6067 ActiveState Package Repository   ← デフォルトのレポジトリ 
 2 181   winnipeg                                     ← 今追加したレポジトリ 
 C:\>ppm search XML-RSS                      ← XML::RSSがレポジトリに存在するか検索 
 1: XML-RSS                   ← 存在する! 
 C:\>ppm install XML-RSS                        ← XML::RSSをインストール  

これでうまく行くはずです。

参考:Perlメモ/モジュールのインストール(PPM) - Walrus, Digit.

このアーカイブについて

このページには、2008年1月以降に書かれたブログ記事のうちメモカテゴリに属しているものが含まれています。

前のアーカイブはメモ: 2006年9月です。

次のアーカイブはメモ: 2008年2月です。