| Summary | Included libraries | Package variables | Description | General documentation | Methods |
sub start_element {
my $self=shift;
my $tag=$_[0]->{Name};
my %args=%{$_[0]->{Attributes}};
# Your code here.
# Before you enclose this method, write these 2 line.
$self->_visited_count_inc($tag);
$self->_push_tag($tag);
}
2) In end_element, sub end_element {
my $self=shift;
my $tag=shift->{Name};
# Your code here.
# Before you enclode this method, wirte these 2 lines.
$self->_visited_count_dec($tag);
$self->_pop_tag;
}
3) In characters, or any other methods where you may used the tag sub characters {
my $self=shift;
my $text=shift->{Data};
$self->_chars_hash->{$self->_top_tag} .= $text;
}
$count = $self->_visited_count('myTag');
$tag = $self->_top_tag;
| new | No description | Code |
| _initialize | No description | Code |
| _tag_stack | Description | Code |
| _push_tag | Description | Code |
| _pop_tag | Description | Code |
| _top_tag | Description | Code |
| _chars_hash | Description | Code |
| _current_hash | Description | Code |
| _visited_count_inc | Description | Code |
| _visited_count_dec | Description | Code |
| _visited_count | Description | Code |
| _tag_stack | code | next | Top |
Title : _tag_stack Usage : @tags = $self->_tag_stack; Function: Get an array of tags that have been accessed but not enclosed. Return : Args : |
| _push_tag | code | prev | next | Top |
| _pop_tag | code | prev | next | Top |
| _top_tag | code | prev | next | Top |
Title : _top_tag Usage : $top = $self->_top_tag; Function: get the top tag in the tag stack. Return : a tag name Args : [none] |
| _chars_hash | code | prev | next | Top |
Title : _chars_hash Usage : $hash= $self->_chars_hash; Function: return the character cache for the specific tag Return : a hash reference, which is intent for character storage for tags Args : [none] |
| _current_hash | code | prev | next | Top |
| _visited_count_inc | code | prev | next | Top |
Title : _vistied_count_inc Usage : $self->vistied_count_inc($tag); # the counter for the tag increase Function: the counter for the tag increase Return : the current count after this increment Args : the tag name [scalar] |
| _visited_count_dec | code | prev | next | Top |
Title : _visited_count_dec Usage : $self->_visited_count_dec($tag); Function: the counter for the tag decreases by one Return : the current count for the specific tag after the decrement Args : the tag name [scalar] |
| _visited_count | code | prev | next | Top |
Title : _visited_count Usage : $count = $self->_visited_count Function: return the counter for the tag Return : the current counter for the specific tag Args : the tag name [scalar] |
| new | description | prev | next | Top |
my ($class, @args) = @_; my $self=$class->SUPER::new(@args); $self->_initialize(@args); return $self;}
| _initialize | description | prev | next | Top |
my $self = shift; $self->{_tag_stack} = []; $self->{_visited_count} = {}; $self->{_chars_hash} = {}; $self->{_current_hash} = {};}
| _tag_stack | description | prev | next | Top |
return @{shift->{_tag_stack}};}
| _push_tag | description | prev | next | Top |
my($self,$tag)=@_; push @{$self->{_tag_stack}}, $tag;}
| _pop_tag | description | prev | next | Top |
my $self=shift; return pop @{$self->{_tag_stack}};}
| _top_tag | description | prev | next | Top |
my $self = shift; my @stack=@{$self->{_tag_stack}}; return $stack[-1]; # get the last element in an array while remaining it in. There are few ways}
# 1) $stack[-1]
# 2) $stack[$#stack]
# 3) $stack[@stack-1]
| _chars_hash | description | prev | next | Top |
return shift->{_chars_hash};}
| _current_hash | description | prev | next | Top |
return shift->{_current_hash};}
| _visited_count_inc | description | prev | next | Top |
my ($self, $tag) = @_; my $visited_count=$self->{_visited_count}; if(exists $visited_count->{$tag}){ $visited_count->{$tag}++; }else{ $visited_count->{$tag}=1; } return $visited_count->{$tag};}
| _visited_count_dec | description | prev | next | Top |
my ($self, $tag) = @_; my $visited_count=$self->{_visited_count}; if(exists $visited_count->{$tag}){ $visited_count->{$tag}--; }else{ $self->throw("'$tag' has not been visited yet. How to decrease it?!"); } return $visited_count->{$tag};}
| _visited_count | description | prev | next | Top |
my ($self, $tag) = @_; return $self->{_visited_count}->{$tag};}
| AUTHOR | Top |
| APPENDIX | Top |