La subrutina normalise llama a _hcf (del inglés
highest common factor o en español máximo común divisor)
para permitir la reducción de la fracción:
sub _hcf {
  my ($x, $y) = @_;
  ($x, $y) = ($y, $x) if $y > $x;
  return $x if $x == $y;
  while ($y) {
    ($x, $y) = ($y, $x % $y);
  }
  return $x;
}
La subrutina _hcf
es ''puro cálculo'' por lo que la implementación
Perl es obviamente inferior en rendimiento a la correspondiente
versión C:
$ cat -n hcf.c
 1  int hcf(int x, int y) {
 2    int t;
 3
 4    if (y > x) {
 5      t = x; x = y; y = t;
 6    }
 7    if (x == y) return x;
 8    while (y) {
 9      t = x;
10      x = y;
11      y = t % y;
12    }
13    return x;
14  }
Casiano Rodríguez León
