search and retrieve the text between the open and close tag of any user specified type
HTML::TokeParser (alt.) or it's ::Simple (alt.) offspring should help here.
nice little loop to go through all the user specified ones
It would be a simple foreach (param('tag')) if you dropped the numbered suffixes, but otherwise you could use [grep] to filter out the unwanted params.
use CGI qw/ :standard /; use Data::Dumper; use HTML::TokeParser; my $file = param('file'); # user defined tags. my @tags = grep /\Atag\d+\z/, param; my %text; foreach my $tag_name ( map param($_), @tags ) { # Is there a better way to rewind the parser? my $html = HTML::TokeParser->new($file) or die "Cannot parse $file"; print "$tag_name\n"; while ( my $tag = $html->get_tag($tag_name) ) { $text{$tag_name} = $html->get_trimmed_text("/$tag_name"); } } print Data::Dumper->Dump( [ \%text ], [qw( text )] );
Something to be wary of, however, is if there isn't a closing tag, get_trimmed_text will return everything until the end of the document; which could suck royally if all you want to search are <meta> tags.
--k.
In reply to Re: Help need with code loop
by Kanji
in thread Help need with code loop
by S_Shrum
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |