1
2
3
4
5
6
7
8
9
10
11
12
{
"query": {
"pages": {
"92491": {
"pageid": 92491,
"ns": 0,
"title": "Eric Clapton",
"extract": "<p><b>Eric Patrick Clapton</b>, CBE (* 30. M\u00e4rz 1945 in Surrey, England; Spitzname: <i>Slowhand</i>) ist ein englischer Blues- und Rock-Gitarrist und -S\u00e4nger. Er ist 17-facher Grammygewinner und - als einziger Musiker der Welt - dreifaches Mitglied der \u201eRock and Roll Hall of Fame\u201c. Clapton pr\u00e4gte die Entwicklung des Bluesrocks seit den 1960er Jahren wesentlich mit und gilt als einer der bedeutendsten Gitarristen.</p>"
}
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#!/usr/bin/perl -T use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); use LWP::UserAgent; use JSON; use Data::Dumper; print "Content-type: text/html; charset=utf-8\n\n"; sub GetWikipediaExtract { my $SearchURL = $WikipediaAPI_URL."Eric Clapton"; my $ua = LWP::UserAgent->new; $ua->timeout(1); $ua->agent('Mozilla 123'); my $response = $ua->get($SearchURL); if ($response->is_success) { my $content = $response->decoded_content; $content = &EncodeUTF8($content); my $json_obj = new JSON; my $perl_data = $json_obj->decode($content); my $text = $perl_data->{'query'}->{'pages'}->{'92491'}->{'extract'}; print Dumper($extract); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use strict; use warnings; use JSON; use Data::Dumper; my $text = do { local $/; <DATA> }; my $json = JSON->new(); my $data = $json->decode($text); #print Dumper( $data ); for my $page ( keys %{ $data->{query}->{pages} } ) { print $data->{query}->{pages}->{$page}->{extract}, "\n"; } __DATA__ { "query": { "pages": { "92491": { "pageid": 92491, "ns": 0, "title": "Eric Clapton", "extract": "foo ... bar" } } } }
my $text = $perl_data->{'query'}->{'pages'}->{/\d+/}->{'extract'};
1
2
3
my $dynamisch = # hier den Code um die Nummer zu holen ....;
my $text = $perl_data->{'query'}->{'pages'}->{$dynamisch}->{'extract'};
1 2
my $test = /\d+/; my $text = $perl_data->{'query'}->{'pages'}->{$test}->{'extract'};
1 2 3 4 5 6 7
my $DumbNumberedKey = ""; for my $key (keys %{$perl_data->{'query'}->{'pages'}}) { $DumbNumberedKey = $key; } my $text = $perl_data->{'query'}->{'pages'}->{$DumbNumberedKey}->{'extract'};
2013-11-14T15:23:29 pqwenn es nur ein key ist, kannst du das auch einfacher haben:
my ($DumbNumberedKey) = keys %{ $perl_data->{query}->{pages} };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use strict; use warnings; use JSON; use Data::Dumper; my $text = do { local $/; <DATA> }; my $json = JSON->new(); my $data = $json->decode($text); #print Dumper( $data ); for my $page ( values %{ $data->{query}->{pages} } ) { print $page->{extract}, "\n"; } __DATA__ { "query": { "pages": { "92491": { "pageid": 92491, "ns": 0, "title": "Eric Clapton", "extract": "foo ... bar" } } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
use strict; use warnings; use JSON; use Data::Dumper; my $text = do { local $/; <DATA> }; my $json = JSON->new(); my $data = $json->decode($text); #print Dumper( $data ); my ($page) = values %{ $data->{query}->{pages} }; print $page->{extract}, "\n"; __DATA__ { "query": { "pages": { "92491": { "pageid": 92491, "ns": 0, "title": "Eric Clapton", "extract": "foo ... bar" } } } }
1 2
my ($jsonHash) = values %{ $perl_data->{query}->{pages} }; my $text = $jsonHash->{extract};
QuoteNot a HASH reference at index.pl line 624.
my ($jsonHash) = values %{ $perl_data->{query}->{pages} };
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
sub GetWikipediaAbstract { my ($query) = @_; $query = &EncodeString($query); my $SearchURL = $WikipediaAPI_URL.$query; my $ua = LWP::UserAgent->new; $ua->timeout(1); $ua->agent('$ScriptUserAgent'); my $response = $ua->get($SearchURL); if ($response->is_success) { my $content = $response->decoded_content; $content = &EncodeUTF8($content); my $json_obj = new JSON; my $perl_data = $json_obj->decode($content); my ($jsonHash) = values %{ $perl_data->{query}->{pages} }; my $text = $jsonHash->{extract}; unless ($text eq "") {return $text} } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
sub GetWikipediaAbstract { my ($query) = @_; $query = &EncodeString($query); my $SearchURL = $WikipediaAPI_URL.$query; my $ua = LWP::UserAgent->new; $ua->timeout(1); $ua->agent('$ScriptUserAgent'); my $response = $ua->get($SearchURL); if ($response->is_success) { my $content = $response->decoded_content; $content = &EncodeUTF8($content); my $json_obj = JSON->new(); my $perl_data = $json_obj->decode($content); # return undef in case of invalid data return undef if ref( $perl_data->{query}{pages} ) ne 'HASH' ); my ($jsonHash) = values %{ $perl_data->{query}->{pages} }; my $text = $jsonHash->{extract} || 'kein Ergebnis erhalten'; # in case of ( 0, undef, or '' ) insert own text return $text; } }
1
2
3
undef -> keine Hash-Referenz / keine Daten
'kein Ergebnis erhalten' -> eben dies...
anderes -> toll, weiter im Programm wie vorgesehen
2013-11-14T16:52:12 cbxk1xgIch habe festgestellt, dass ich jetzt gelegentlich einen schönen Fehler geschmissen bekomme. Dabei bricht gleich das komplette Script ab.
QuoteNot a HASH reference at index.pl line 624.
1 2 3 4 5 6 7
# fetch all values from inner hash; and only take "extract" from each value my @text = map { $_->{extract} } values %{ $perl_data->{query}->{pages} }; print join "\n\n", "Ergebnisse: ", @text, '';