Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: WURFL web browsers patch and XML::Simple

by jethro (Monsignor)
on Dec 14, 2009 at 10:01 UTC ( [id://812679]=note: print w/replies, xml ) Need Help??


in reply to WURFL web browsers patch and XML::Simple

foreach my $browser ( values %{$data->{devices}->{device}} ) { push @agents, $browser->{user_agent}; }

I collected the info into an array, but naturally instead of the push you could just put the print statement as in your example

UPDATE: After Moritz got through my thick brain on the second try I finally saw the error of my ways and added 'values'

Replies are listed 'Best First'.
Re^2: WURFL web browsers patch and XML::Simple
by moritz (Cardinal) on Dec 14, 2009 at 11:43 UTC
    I can't see how that would ever work. for my $browser (%hash) iterates over both keys and values of the hash.

    Since the keys are always strings, I can't see how $browser->{user_agent} works.

    Did I miss something here?

      Ah, ok. So what I need to do to make it work is:

      foreach my $browser ( %{$data->{devices}->{device}} ) { print "$data->{devices}->{device}->{$browser}->{user_agent}<br>"; }

      I think that is an improvement on where I started as it goes into the heart of the data structure rather than disassembling it. However perhaps there is more that can be done?

      Update:The inclusion of values in jethro's update effectively fixes the problem, the solution direct and concise.

Re^2: WURFL web browsers patch and XML::Simple
by jonnyfolk (Vicar) on Dec 14, 2009 at 10:44 UTC

    That's what I was looking for - much more direct!! Thanks very much.

    Update: Unfortunately including it in the code prints a blank! It makes sense to me looking at it - what has gone wrong???

    Update2:The inclusion of values in jethro's update effectively fixes the problem.

    #!/usr/bin/perl -w use strict; print "Content-type: text/html\n\n"; # use module use XML::Simple; use Data::Dumper; use LWP::Simple; my $url = 'http://wurfl.sourceforge.net/web_browsers_patch.xml'; my $content = get($url); # create object my $xml = new XML::Simple; # read XML file my $data = $xml->XMLin($content); my @agents; foreach my $browser ( %{$data->{devices}->{device}} ) { push @agents, $browser->{user_agent}; } print @agents;

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (2)
As of 2024-03-19 07:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found