open(GZIP, "<:gzip", "$path") or die "$!\n"; my @a = @{$categories{$k}->{traces}}; LOOP: while ( my $line = ) { my @lista = split /;/, $line; my $head = $lista[0]; for ( my $i = '0'; $i < scalar @a; $i++ ) { if ( $head =~ /^($a[$i]->{regex})$/ ) { $A += $lista[$a[$i]->{calc}[0]]; $B += $lista[$a[$i]->{calc}[1]]; $C += $lista[$a[$i]->{calc}[2]]; next LOOP; } } } close(GZIP);