OUTER: foreach my $line () { INNER: for ( my $i = 0; $i < scalar @{$categories{$k}->{traces}}; $i++ ) { if ( $line =~ /^($categories{$k}->{traces}[$i]->{regex})/ ) { my @lista = split /;/, $line; $A += $lista[${$categories{$k}->{traces}[$i]->{calc}}[0]]; $B += $lista[${$categories{$k}->{traces}[$i]->{calc}}[1]]; $C += $lista[${$categories{$k}->{traces}[$i]->{calc}}[2]]; next OUTER; } } } close(GZIP);