> Consider the problem of multiplying together two 2-dimensional tensors. In
> standard notation, this would be symbolized by
>
> Cijkl = Aij * Bkl
>
> where the letters i, j, k and l are written as subscripts and represent
> the indices of their respective tensors. To accomplish that same
> multiplication in Perl, one needs to write (using RFC 204 notation):
>
> for my $i = (0..2) { #assuming 3x3 tensors
> for my $j = (0..2) {
> for my $k = (0..2) {
> for my $l = (0..2) {
> $c[[$i,$j,$k,$l]] = $a[[$i,$j]] * $b[[$k,$l]] ;
> }
> }
> }
> }
>
> While this is not particularly difficult, it is clumsy, and slow.
Using $"-joined numbers as hash keys n-dim syntax, it becomes
something like
my $outerkey;
%C = map { $outerkey=$_;
map { ( $outerkey.$".$_ , $a{$outerkey} * $b{$_} ) }
keys %b
} keys %a;
which isn't a whole lot cleaner, is it.