私はMediaWiki APIを使って特定のWikipediaタイトルからすべてのリダイレクトを取得しようとしていますが、私はほとんどそこにいると思いますが、ハッシュと配列の複雑なデータ構造に迷うことがあります。PerlでMediaWiki :: APIからリダイレクトタイトルのリストを抽出するにはどうすればよいですか?
どのようにしてリダイレクトタイトルのリストを抽出できますか?例では
私は「日本のために照会し、このようになりますリストを取得する必要があります
'JPN',"Land der aufgehenden Sonne","Das Land der aufgehenden
Sonne","Zipango","\x{65e5}\x{672c}","R\x{ec}b\x{11b}n"
(サイド質問:なぜ私はすべてのケースのためのUTF-8文字列を取得しない?)
を下記のコードは、MediaWiki::APIのドキュメントに適合しています。
use MediaWiki::API;
use warnings;
binmode STDOUT, ':utf8';
use JSON;
use Data::Dumper;
my $LANG="de";
my $mw = MediaWiki::API->new({ api_url => 'https://en.wikipedia.org/w/api.php' } );
my $mw_LANG = MediaWiki::API->new({ api_url => "https://$LANG.wikipedia.org/w/api.php" } );
my $wikititle ="Japan";
my $alltitles = $mw_LANG->api({
action => 'query',
titles => $wikititle,
prop => 'redirects',
format => 'json',
})
|| die $mw_LANG->{error}->{code} . ': ' . $mw_LANG->{error}->{details};
#just print to know how the structure looks like
print Dumper($alltitles);
my ($pageid,$langlinks) = each (%{ $alltitles->{query}->{pages} });
print "pageid $pageid\n";#yes works: this prints the page id
問題:redirect-array
で実際のタイトルを取得するにはどうすればよいですか?
my $relinks = $alltitles->{'query'}->{'pages'}->{$pageid}->{'redirects'}; #no does not work!
foreach my $el (@{ $relinks->{'title'} }) {
print " $el $el->{'*'}\n";
}
'$ r - > {redirects} - > @ *'これで何が起こっているのですか?それは '$ _'のperl6バージョンに似ていますか?それはperlの特定の最小バージョンを必要とするのではないですか? – jmcneirney