my @number = split '', '1234567';
####
use strict;
use warnings;
my @numbers = map {[reverse split '']} qw(109156 114);
my $maxDigits = 0;
@$_ > $maxDigits and $maxDigits = @$_ for @numbers;
@numbers = map {[@$_, (0) x ($maxDigits - @$_)]} @numbers;
my @result;
my $carry;
for my $digit (0 .. $maxDigits - 1) {
my $sum = $carry;
$sum += $_->[$digit] for @numbers;
push @result, substr $sum, -1, 1, '';
$carry = $sum || 0;
}
@numbers = map {[reverse @$_]} @numbers;
@result = reverse @result;
print "@$_\n" for @numbers;
print '-' x ($maxDigits * 2), "\n";
print "@result\n";
####
1 0 9 1 5 6
0 0 0 1 1 4
------------
1 0 9 2 7 0