#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11112217 use warnings; use List::Util qw( sum ); my @array = qw( 1 2 3 4 5 ); local $_ = "@array"; for my $possible ( 1 .. @array ) { my $pattern = join '.+?', ('\b(\d+)\b') x $possible; local $" = '+'; /$pattern(?{print "@{^CAPTURE} = ", sum(@{^CAPTURE}), "\n"})(*FAIL)/; } #### 1 = 1 2 = 2 3 = 3 4 = 4 5 = 5 1+2 = 3 1+3 = 4 1+4 = 5 1+5 = 6 2+3 = 5 2+4 = 6 2+5 = 7 3+4 = 7 3+5 = 8 4+5 = 9 1+2+3 = 6 1+2+4 = 7 1+2+5 = 8 1+3+4 = 8 1+3+5 = 9 1+4+5 = 10 2+3+4 = 9 2+3+5 = 10 2+4+5 = 11 3+4+5 = 12 1+2+3+4 = 10 1+2+3+5 = 11 1+2+4+5 = 12 1+3+4+5 = 13 2+3+4+5 = 14 1+2+3+4+5 = 15