変数

元の内容とは関係ない話なのでリンクは張らないけど、4 つの変数 a, b, c, d があって、そのうち異なる 2 つの変数の組み合わせすべてについて foo を作用させよという問題があるとする。解答例は Perl だとこんな感じになる。

@array = ($a, $b, $c, $d);
for $i (0 .. $#array) {
  for $j (0 .. $#array) {
    foo($array[$i], $array[$j]) if $i != $j;
  }
}

ただ、設問の行間の読み方にもよるが、ニュアンス的には以下の方が正しいと思う。

@array = (\$a, \$b, \$c, \$d);
for $v1 (@array) {
  for $v2 (@array) {
    foo($$v1, $$v2) if $v1 != $v2;
  }
}

どちらがより教育的であるかは、教育の目的によるか。