Práctica: AUTOLOAD

Escriba un módulo HTML::Tags y su programa cliente usehtmltags.pl. Para cada tag HTML de la forma
  <tag attr1="val1" attr2="val2"> texto </tag>
el módulo provee una función tag que cuando es llamada como sigue:

  tag('texto', attr1 => 'val1', attr2 => 'val2')

retorna el texto HTML anterior. Así por ejemplo, la llamada:

A("Visite nuestra página", href=>"nereida.deioc.ull.es");
debería devolver la cadena:
<A href="nereida.deioc.ull.es">Visite nuestra página</A>
La llamada:
font("Alerta!", color=>red);
devolverá:
<font color="red">Alerta!</font>
etc.

Necesitará una función AUTOLOAD para realizar esta práctica.

Para la subrutina generada utilize la estrategia de paso de parámetros a través de un hash para tener argumentos con nombres (véase la sección 1.15.7)

Las funciones creadas serán insertadas en el paquete/espacio de nombres especificado como argumento de la directiva use HTML::Tags, como se muestra en el siguiente ejemplo:

use HTML::Tags 'MyHTML';

{
  package MyHTML;
    my $t =  
      html(
        head(title('Hello World!),
        body(
          h1('Hello World!'),
          p,hr,p,
        )
     )
}
# de nuevo en package main

print "$t\n";

Si no se especifica un argumento a use HTML::Tags se utilizará el espacio de nombres HTML::Tags.

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