#!/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