#! perl -slw use strict; use List::Util qw[ reduce ];; my @array=(1,2,3,4,-1,-2,-3,11,12,13);; my $sum = @{ reduce{ @{ $a } = ( $a->[0]+$b, $b ) if $b > $a->[1]; $a; } [0, -9e99 ], @array }[0]; print $sum;