1
2
3
4
5
6
7
8
9
10
11
my $tree = HTML::TreeBuilder->new();
my %rules;
my @all_normal;
my @all_normal_lists;
%rules->{'test1'} = "'_tag' => 'ol', 'class' => 'nobr'";
%rules->{'test2'} = "'_tag' => 'ul', 'class' => 'cfgr3'";
$tree->parse_content($sContent);
@all_normal_lists = $tree->look_down(%rules->{'test1'});
1
2
3
4
5
$x = 0;
while(scalar(@all_normal_lists) < 1){
$x++;
@all_normal_lists = $tree->look_down(%rules->{'test_'.$x});
}
%rules->{'test1'}
1
2
3
4
5
6
7
$rules{'test1'} = {'_tag' => 'ol', 'class' => 'nobr'};
# die {} machen ne anonyme Hashref
...
$tree->look_down(%{$rules{'test1'}});
# hier mit dem % wieder dereferenzieren
1
2
3
my @rules2 = ('_tag', 'ol','style','margin-top:-11px','onmouseover','return true');
$tree->look_down(@rules2[0],@rules2[1],@rules2[2],@rules2[3],@rules2[4],@rules2[5]);
2012-08-01T08:53:58 FragenstellerCode: (dl )1
2
3my @rules2 = ('_tag', 'ol','style','margin-top:-11px','onmouseover','return true');
$tree->look_down(@rules2[0],@rules2[1],@rules2[2],@rules2[3],@rules2[4],@rules2[5]);
Das läuft und findet was es soll, nun aber die Frage, wie übergeb ich die Parameter als variable Liste?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my %test1;
my %test2;
%test1->{'_tag'} = "ol";
%test2->{'class'} = "nobr";
$anzahl_rules = 2;
while($anzahl_rules > 0){
print"$anzahl_rules\n";
@all_normal_lists = $tree->look_down(%test1,%test2);
print"Versuch $anzahl_rules: ".scalar(@all_normal_lists)."\n";
$anzahl_rules--;
}
2012-08-01T08:28:19 Fragensteller
Quote$ perl -wE'use strict;my %test1;%test1->{"_tag"} = "ol"'
Using a hash as a reference is deprecated at -e line 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
my @rule0 = ('_tag', 'ol','class','nobr');
my @rule1 = ('_tag', 'ol','style','margin-top:-11px','onmouseover','return true');
@{$rules{rule0}}=@rule0;
@{$rules{rule1}}=@rule1;
#print @{$rules{rule1}}[0];
while($it_rules < scalar keys %rules){
@all_normal_lists = $tree->look_down(@{$rules{'rule'.$it_rules}});
print"Versuch $it_rules: ".scalar(@all_normal_lists)."\n";
$it_rules++;
undef(@all_normal_lists);
}
1 2 3 4 5 6 7 8
my @rues = ( ['_tag', 'ol','class','nobr'], ['_tag', 'ol','style','margin-top:-11px','onmouseover','return true'] ); for my $rule (@rules) { my @all_normal_lists = $tree->look_down(@$rule); }
2012-08-01T07:36:11 Fragensteller(Sorry, hatte den Post versehendlich unter Perl 6 gelegt)