use List::MoreUtils 'pairwise'; while () { y/ ()/,[]/; my( $D, $L, $M ) = eval { ( $a, $b ) = @{ [ eval ]->[ 1 ] }; pairwise { $a + $b } @$a, @$b }; print $@ || "$D $L $M\n"; }