Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: WWW::Wordnik::API output

by greengaroo (Hermit)
on Nov 20, 2012 at 14:55 UTC ( #1004731=note: print w/ replies, xml ) Need Help??


in reply to WWW::Wordnik::API output

The output seems to be a serialized structure. I suggest you first convert it to a HashRef using the Data::Serializer::Raw module in conjunction with Data::Dumper.

For example, you can do this:

# Creating a serializer using Data::Dumper my $serializer = Data::Serializer::Raw->new( 'serializer' => 'Data::Du +mper' ); my $hashref = $serializer->deserialize( $content );

Then it will be easier to process as a HashRef.

UPDATE: I see your structure is JSON, let me give you another answer. The principle is the same, convert your JSON to a HashRef, using the JSON module:

use JSON; my $hashref = from_json( $content );

I do this all the time! Much easier to deal with as a HashRef!

Testing never proves the absence of faults, it only shows their presence.


Comment on Re: WWW::Wordnik::API output
Select or Download Code
Replies are listed 'Best First'.
Re^2: WWW::Wordnik::API output
by welle (Beadle) on Nov 20, 2012 at 15:32 UTC

    Thanks greengaroo! But how can I now get only the sentences examples from the hash reference?I am still not getting it :( If I use for example:

    foreach (sort keys %hashref) { print "$_ : $hashref{$_}\n"; }

    I don't get anything

      This extracts the text only:
      #!/usr/bin/env perl use strict; use warnings; use feature 'say'; use JSON; my $content = '{"examples":[{"year":1891,"provider":{"name":"wordnik", +"id":711},"url":"http://www.gutenberg.org/dirs/2/6/3/3/26330/26330-8. +txt","word":"waste","text":"We have the total waste of $225,496,741 a +nd this, reduced to its actual significance, means that of the total +actual terminations, 83.6 per cent. was _actual waste_ and only 16.4 +per cent. legitimate terminations, while the great bulk of the last i +tem of","title":"Frenzied Finance Vol. 1: The Crime of Amalgamated"," +documentId":18081426,"exampleId":1090100953,"rating":8923.145},{"year +":2009,"provider":{"name":"wordnik","id":711},"url":"http://notasheep +maybeagoat.blogspot.com/2009/02/g.html","word":"waste","text":"Do you + think that over a £billion a year in waste is a good thing in this s +ystem?","title":"Gordon Brown and the suspension of normal politics", +"documentId":30226278,"exampleId":838783173,"rating":764.0},{"year":2 +006,"provider":{"name":"wordnik","id":711},"url":"http://scientificac +tivist.blogspot.com/2006/04/no-more-aspirin-please.html","word":"wast +e","text":"OK, if 13% admin waste is not enough to establish my point +, then say 40%.","title":"No More Aspirin, Please","documentId":30350 +472,"exampleId":886062454,"rating":760.0},{"year":2011,"provider":{"n +ame":"spinner","id":712},"url":"http://www.theglobeandmail.com/life/f +acts-and-arguments/the-essay/i-salvage-goods-from-the-curb-on-trash-d +ay/article2149147/?utm_medium=Feeds%3A%20RSS%2FAtom&utm_source=Home&u +tm_content=2149147","word":"waste","text":"Growing up, the expression + \\"waste not, want not\\" was branded into my brain.","title":"The G +lobe and Mail - Home RSS feed","documentId":32783691,"exampleId":6452 +79785,"rating":749.0},{"year":2011,"provider":{"name":"huffingtonpost +","id":715},"url":"http://www.huffingtonpost.com/2011/01/02/2012-elec +tions-gop-agenda_n_803311.html","word":"waste","text":"Issa, the inco +ming chairman of the House Oversight and Government Reform Committee, + has been especially critical of what he calls waste in Obama\'s econ +omic stimulus spending.","title":"2012 Elections Could Be Greatly Imp +acted By New GOP Agenda","documentId":31276093,"exampleId":186827020, +"rating":604.0}]}'; my $hashref = from_json( $content ); foreach ( @{ $hashref->{'examples'} } ) { say "TEXT: " . $_->{'text'}; } __END__ TEXT: We have the total waste of $225,496,741 and this, reduced to its + actual significance, means that of the total actual terminations, 83 +.6 per cent. was _actual waste_ and only 16.4 per cent. legitimate te +rminations, while the great bulk of the last item of TEXT: Do you think that over a £billion a year in waste is a good thin +g in this system? TEXT: OK, if 13% admin waste is not enough to establish my point, then + say 40%. TEXT: Growing up, the expression "waste not, want not" was branded int +o my brain. TEXT: Issa, the incoming chairman of the House Oversight and Governmen +t Reform Committee, has been especially critical of what he calls was +te in Obama's economic stimulus spending.

        I got it. It works perfectly and I understood what I was doing wrong. Thank you very much!

      I suggest you use strict; because you would have received an error instead of nothing.

      This:

      foreach (sort keys %hashref) { print "$_ : $hashref{$_}\n"; }

      Should be replace by this:

      foreach (sort keys %{$hashref}) { print "$_ : ", $hashref->{$_}, "\n"; }

      I was using a HashRef not a Hash, $hashref is not the same variable as %hashref, so if you loop through %hashref, of course you get nothing because it is an empty variable. Using strict would have prevent you from doing this. I hope this helps!

      Testing never proves the absence of faults, it only shows their presence.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1004731]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2015-07-31 01:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls