#! perl use strict; use warnings; use List::Util 'sum0'; use List::MoreUtils 'part'; my @array = @ARGV ? @ARGV : qw( -1 1 7 -4 3 -51 4 47 -87 ); @array = sort { $a <=> $b } @array; my @part = part { $_ >= 0 } @array; printf "Order of array: %s\n", join ' ', @array; printf "Sum of all: %d\n", sum0 @array; printf "Sum of positive: %d\n", sum0 @{ $part[1] }; printf "Sum of negative: %d\n", sum0 @{ $part[0] };