use v5.12; use warnings; use Data::Dump qw/pp dd/; my $X = [ [1, -4, 7], [-2, 3, 3] ]; my $Y = [ [8, -9, -6, 5], [1, -3, -4, 7], [2, 8, -8, -3], [1, 2, -5, -1] ]; pp $X; pp $Y; my $X_Y = [ map { my $x = $_; map { my $y = $_; [ map { my $xx = $_; map { $xx * $_ } @$y } @$x ] } @$Y } @$X ]; pp $X_Y;