Please help!!!  I'm trying to complete an assignment to determine the number of 
HTML tags within a string at each level of nesting.  ie:  for the string 
 
"<p><strong>a</strong><a>b</a></p>"
 
<p> is at level 0
<strong> and <a> are at level 1
etc...
 
My code is below.  The problem is that apparently my RegEx is wrong (in the 
while loop), and so the loop is infinite, and no values are printed--just "".  
I'm just learning perl, and RegEx is really confusing to me.  Any feedback 
would be appreciated!
 
Thanks!
Josh
 
 
--------begin code--------
 
#!usr/bin/perl
#Exercise 8.9
#To determine how many HTML tags are included in a string at each level of 
nesting.
 
use strict;
use warnings;
 
my $string 
= "<p><strong>a</strong><a>b</a></p><strong>c<italic>d<a>e</a></italic></strong>
";
 
print("The HRML string is:\n$string\n\n");
 
our @counter;
count($string, 0);
 
for (0 .. $#counter){
  print("There are $counter[$_] valid level",$_," html tags.\n");
}
 
sub count
{
  my $string = shift();
  my $level = shift();
 
  while ($string =~ m/.*?<([\w]*?)>(.\s*)<\/\1>/g){
#should remember html tag as 1 and contents as 2
    $counter[$level]++;
    print("Tag is \"\1\", contains \"\2\" ");
    print("at level $level\n");
    count($string, $level+1);
#recursively calling count with the string and the level increased by one
  }
}

--------end code--------



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to