#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use WebService::Simple;
if ($^O eq 'MSWin32') {
binmode STDOUT, ':encoding(cp932)' if $^O eq 'MSWin32';
Encode::from_to($ARGV[0], 'cp932', 'utf-8');
}
my $word = shift || 'takesakoメソッド';
my $hatenakeyword = WebService::Simple->new(
base_url => 'http://search.hatena.ne.jp/keyword',
param => { ie => 'utf8', mode => 'rss2' }
);
my $response =
$hatenakeyword->get( { word => $word } );
my $xml = $response->parse_xml;
my $items = (ref($xml->{channel}->{item}) eq 'ARRAY') ?
$xml->{channel}->{item} : [$xml->{channel}->{item}];
sub sanitize {
my $arg = shift;
$arg =~ s/\x{301c}/\x{ff5e}/g if $^O eq 'MSWin32';
$arg =~ s/(<[^>]*>|&[^;]*;)//g;
$arg;
}
for my $item ( @$items ) {
printf "[[[%s]]]\n%s\n\n%s\n\n",
sanitize($item->{title}), sanitize($item->{description}), $item->{link};
}
1;
__END__
=head1 NAME
hatena-keyword.pl - はてなキーワード検索
=head1 DESCRIPTION
WebService::Simpleを使用して引数で与えられたキーワードを、はてなキーワードから取得し表示します。
=head1 SYNOPSIS
perl perl hatena-keyword.pl 'どうか lang:ja'
=head1 AUTHOR
mattn
=head1 SEE ALSO
L, L
=cut