我的问题是我在脚本末尾没有输出.. 解析时的所有打印都没问题,但最后的数组是空的。
我做错了什么? 这不是处理裁判的方法吗?
thx 4回应
my %branches = ();
print "<pre>";
my %tmp_branch;
while (defined($_ = shift @bugs)) {
my $bug_id = $_->id;
my $bug_product = $_->product;
my $content = $browser->get("http://****?ticket=".$bug_id);
$content = $content->decoded_content;
my @rows = split /\n/, $content;
my $trigger = 0;
while (defined($_ = shift @rows)) {
chomp;
if ($_ eq "") {
$trigger = 0;
}
elsif (/Branch: (.*)/) {
if (exists $branches{$1}) {
my $branch_ref = $branches{$1};
%tmp_branch = %$branch_ref;
print "existing Branch: $1\n";
} else {
my %new_branch = ();
my @sources = ();
my @wfs = ();
my @methods = ();
$new_branch{'sources'} = \@sources;
$new_branch{'methods'} = \@methods;
$new_branch{'wfs'} = \@wfs;
$branches{$1} = \%new_branch;
%tmp_branch = %new_branch;
print "new Branch: $1\n";
}
}
elsif (/Sourcen.*:/) {
$trigger = "sources";
}
elsif (/geaenderte Methoden.*:/) {
$trigger = "methods";
}
elsif (/geaenderte Workflows.*:/) {
$trigger = "wfs";
}
elsif ($trigger && $_ ne "") {
my $tmp_array_ref = $tmp_branch{$trigger};
my @tmp_array = @$tmp_array_ref;
push @tmp_array, $_;
print "find $trigger: $_\n";
}
}
}
print "\n\n\n";
while (my ($k,$v)=each %branches){
my $branch_ref = $v;
my %tmp_branch = %$branch_ref;
my $sources_ref = $tmp_branch{'sources'};
my @sources = @$sources_ref;
my $methods_ref = $tmp_branch{'methods'};
my @methods = @$methods_ref;
my $wfs_ref = $tmp_branch{'wfs'};
my @wfs = @$wfs_ref;
print "Branch: $k\nSources:\n";
print @sources;
print "\nMethods:\n";
print @methods;
print "\nWorkflows:\n";
print @wfs;
print "\n";
}
print "</pre>";
示例输入:
Kontext Auswertung fuer Ticket: #12345 (xxxxSomeTextxxx)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HINWEIS: xxxxSomeTextxxx
Branch: HEAD
~~~~~~~
Sourcen (4):
IamArow
IamArow2
IamArow3
IamArow4
geaenderte Methoden (1):
IamArow
geaenderte Workflows (2):
IamArow
IamArow2
答案 0 :(得分:2)
在没有任何输入数据的情况下很难弄明白,因为这意味着我们无法在自己的机器上运行脚本的副本!如果您的示例代码 自包含 ,通常非常有用!
那就是说,我认为你的问题源于做这样的事情:
my $branch_ref = $branches{$1};
%tmp_branch = %$branch_ref;
第二行执行散列的浅拷贝,因此%tmp_branch
不再是$branches{$1}
引用的散列。将数据添加到%tmp_branch
哈希时,您不会将数据添加到$branches{$1}
哈希。
@tmp_array
同样受到影响。