perldoc perlref
). Se quieren esribir diversas funciones,
una por cada color, de manera que devuelvan el texto HTML
que pone en el correspondient color la cadena que se les
pase como parámetro:
$ cat -n colors.pl 1 #!/usr/bin/perl -w 2 use strict; 3 4 my @colors = qw(red blue green yellow orange purple violet); 5 for my $name (@colors) { 6 no strict 'refs'; # permitir la manipulación de la tabla de símbolos 7 *$name = *{uc $name} = sub { "<FONT COLOR='$name'>@_</FONT>" }; 8 } 9 10 print "¡Tenga ", red("cuidado"), "con esa ", green("luz!"),"\n"; 11 print "¡Tenga ", RED("cuidado"), "con esa ", GREEN("luz!"),"\n";La clausura se forma en la línea 7 con la variable léxica
$name
declarada en la línea 5.
Se han usado typeglobs para instalar entradas en la tabla de símbolos
a la función tanto en minúsculas como en mayúsculas.
Al ejecutar este programa tenemos la salida:
$ ./colors.pl ¡Tenga <FONT COLOR='red'>cuidado</FONT>con esa <FONT COLOR='green'>luz!</FONT> ¡Tenga <FONT COLOR='red'>cuidado</FONT>con esa <FONT COLOR='green'>luz!</FONT>