No es una biblioteca de funciones para Perl. (Aunque pueda usarse como tal)
No es un lenguaje de programación. (Aunque lo parezca)
Un sistema de plantillas, o de variables de reemplazo para la Web y Perl. Contemplando los componentes de la Web; páginas, URLs, elementos gráficos, tag HTML, como objetos.
Un sistema para la separación del código ejecutable Perl y la representación de los datos generados en HTML mediante Tags HTML que son reemplazados por variables creadas en Perl.
Separación clara del código Perl del HTML.
Simplicidad, que no haya que aprenderse decenas de funciones Perl. Nes tiene únicamente diez Tags para incluir en el HTML, y un sólo objeto con un único método que instanciar en Perl. Puedes aprender a usar Nes en horas.
Reutilización, encapsulando partes de HTML con su código Perl.
CGI distingue los script ejecutables en el Servidor de los que son ejecutados en el Cliente. Esto es, para un servidor Web no es lo mismo un "archivo.cgi" que un "archivo.html"
Esta distinción sirve para un Servidor Web, pero no para el usuario de la Web, que felizmente ignora tal cosa.
La idea es que Nes se ejecute desde la plantilla y no desde el script:
http://dominio.com/archivo.html y no: http://dominio.com/archivo.cgi
Mediante unas sencillas instrucciones en el archivo htaccess podemos crear un “Action” para ejecutar nuestros script Perl con la extensión que deseemos.
Para Nes hemos creado la extensión “nhtml” como forma de distinguir los HTML de las plantillas de Nes, así quedaría nuestra configuración htaccess:
AddHandler perl-nes .nhtml AddHandler perl-nes .nhtm Action perl-nes /cgi-bin/nes/dispatch.cgi
Bien, ¿pero como sabemos que script Perl se tiene que ejecutar para una plantilla concreta?
Nes define el siguiente Tag para incluir en la primera linea del archivo HTML:
{: NES 1.0 ('archivo.pl') :} <html> <head> ...
De esta forma "dispatch.cgi" lanzará "archivo.pl", pero...
¿Que hay que poner en mi "archivo.pl" para que salgan cosas en el "archivo.nhtml"?
Lo mínimo que hay que poner es... nada, y funcionará, pero en la mayoría de los casos bastará con sólo cinco lineas de código Perl:
# fundamental :-) use Nes; # Crear un objeto de la clase Singleton. my $nes = Nes::Singleton->new('archivo.nhtml'); # Una variable para guardar los datos que vamos a mostrar en HTML my $nes_tags = {}; # Los datos que queremos enviar a la salida HTML $nes_tags->{'variable'} = 'Cosas que decirle al mundo'; # el envío de los datos a la salida HTML $nes->out(%$nes_tags);
¿Cómo mostramos ahora esa variable en el archivo.nhtml?
Con el siguiente Tag Nes:
{: NES 1.0 ('archivo.pl') :} <html> <head> <title>Nes sample/title> </head> <body> {: $ variable :} </body> </html>
Haciendo http://dominio.com/archivo.nhtml obtendremos la siguiente salida:
Cosas que decirle al mundo