Práctica: Máximo

Rellene las zonas de puntos en el esqueleto de programa que figura a continuación. La función max deberá calcular el máximo o el mínimo de los elementos de una lista. El primer argumento de la función es una cadena conteniendo el operador de comparación a usar (por ejemplo < o > o gt o lt). Utilice la función eval la cuál recibe una cadena y evalúa la expresión Perl que representa.

lhp@nereida:~/Lperl/src$ cat -n max.pl
     1  #!/usr/bin/perl -w
     2  use strict;
     3
     4  sub max {
     5    my $op = (shift || "<");
     6
     7    return undef unless ((@_) and $op =~ m{([<>]=?)|(gt)|(lt)});
     8    my $m = shift;
     9    my $comparison = '$m '.$op.' $x ';
    10
    11    for my $x (@_) {
    12      $m = $x if ....;
    13    }
    14    $m;
    15  }
    16
    17  my $m1 = max("<", 5, 4, 9, 1, 0);
    18  my $m2 = max(">",-1, -5, 0, 13, 12, 7);
    19  my $m3 = max("lt",-1, "b", 0, 13, 12, 7, "a");
    20  my $m4 = max();
    21
    22  print "$m1, $m2, $m3\n";
    23
    24  print "$m4\n" if defined($m4);
Comente en su respuesta el significado de las líneas 5 y 7. Documente el código. Sigue un ejemplo de ejecución:
lhp@nereida:~/Lperl/src$ ./max.pl
9, -5, b
lhp@nereida:~/Lperl/src$

Casiano Rodríguez León
2009-10-04