#!/usr/bin/perl -w
use strict;
use XML::RSS;
use encoding 'utf8';
use Jcode;
my $rss = new XML::RSS (version => '1.0', encode_output => 0);
$rss->channel(
title => "example.com",
link => 'http://example.com',
language => 'ja',
description => "description",
);
open SUBBACK, "<./subback.txt" or die;
while (<SUBBACK>){
if(/(\d*),(.*),(\d*)/){
my $jp = $2;
Jcode::convert( \$jp , 'utf8', 'sjis');
$rss->add_item(
title => "$jp",
link => "http://example.com/cgi-bin/bbz/main.cgi",
description => "$3",
);
}
}
close SUBBACK;
print "Content-type: application/xml\n\n";
print $rss->as_string;
やっと書けた・・・。utf8フラグだのなんだのと悩んだが、
encode_output => 0
がポイントだったようだ。
ある方のソースを参考にさせてもらったのだが、そのままではうまくいかず、
use utf8; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8";
を、以下のようにした。
use encoding 'utf8';
めんどくさいねえ・・・。この辺も、仕様じゃなくてバグが潜んでるんじゃないかと思えてならない・・・。
あと、cgiはいきなりサーバーにあげず、とりあえずwinで動かしてエラーがないことくらいは確認するようにした。さくらと同じ環境をローカルに作れば一番いいんだよな・・・virtual pcでできるかな?