sub mmMxM { our( @A, @B ); local( *A, *B ) = @_; my @C = map[0,0,0,0], 0..3; for my $i ( 0 .. 3 ) { for my $j ( 0 .. 3 ) { $C[$i][$j] += $A[$i][$_]*$B[$_][$j] for 0 .. 3; } } return \@C; }