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