http://qs1969.pair.com?node_id=405739


in reply to Introduction to anonymous arrays and hashes

I'm assuming this is related to a markup language such as HTML or XML.

I'm unsure whether you are using the data to create a document or if you are extracing the data from a document. If one of these, I would suggest you use one of the HTML:: or XML:: modules on CPAN. There may be others with which I'm unfamiliar; XML::LibXML is the only one that I have a reasonable working knowledge of.

In terms of how you might use anonymous arrays and hashes, behind the <readmore> is a script which creates a data structure to represent the following HTML fragment (and prints the content of the <em> element).

<html lang="en"> <head> </head> <body> <h1>Heading1</h1> <p id="para1" class="first-para">This is <em>emphasied</em>. A +nd this is not.</p> </body> </html>

Note: This code is for illustrative purposes only - I am not suggesting you include it in an application.

use strict; use warnings; my $ra_web_page = [ { type => 'tag', element => 'html', attributes => { lang => 'en', }, content => [ { type => 'tag', element => 'head', attributes => { }, content => [ ], }, { type => 'tag', element => 'body', attributes => { }, content => [ { type => 'tag', element => 'h1', attributes => { }, content => [ { type => 'string', value => 'Heading 1', }, ], }, { type => 'tag', element => 'p', attributes => { id => 'para1', class => 'first-para', }, content => [ { type => 'string', value => 'This is ', }, { type => 'tag', element => 'em', attributes => { }, content => [ { type => 'string', value => 'emphasised', }, ], }, { type => 'string', value => '. And this is not.', }, ], }, ], }, ], }, ]; my $em_text = $ra_web_page->[0]{content}[1]{content}[1]{content}[1]{co +ntent}[0]{value}; print "EM text = $em_text\n";

This has probably raised further questions. Ask away.

Regards,

PN5