La línea
#!/usr/bin/perl
se llama la
línea shebang.
* Para Perl, esa línea no significa nada, ya que es un comentario (empieza por '#').
* Para Windows, tampoco significa nada (sigue siendo un comentario).
* Para UNIX/Linux, sí que tiene significado: es la ruta completa al intérprete o programa que es capaz de entender lo que sigue (en las líneas siguientes).
De esta manera, desde el shell, en lugar de tener que escribir
perl programa.plsolo tenemos que darle permisos de ejecución al programa.pl. Y a continuación escribir
./programa.plEl shell mirará qué tipo de fichero es, mirando la línea
shebang, y ejecutará el intérprete indicado así:
/usr/bin/perl programa.plLas opciones que siguen a la ruta se mandan también en la ejecución del intérprete:
#!/usr/bin/perl -w -T programa.plse transforma en
/usr/bin/perl -w -T programa.plEl significado de las opciones la tienes en
perldoc perlrun. En el caso que planteas:
-w : activa los avisos. Perl te avisará de cualquier cosa extraña que encuentre
-T : activa modo contaminado. En este modo de funcionamiento, Perl rehusará el utilizar de forma directa la entrada proveniente del usuario, y activará otras medidas de control. Esto sirve para blindar los CGI (por ejemplo), ante intentos de entradas contaminadas por parte de los usuarios (y sobre todo,
hackers).
En cuanto a las extensiones de los ficheros, .cgi y .pl
* No tiene ningún significado para Perl. A Perl solo le importa el contenido.
* Tampoco significa nada para UNIX/Linux. Al shell solo le importa la línea
shebang.
* Si que tiene importancia para Windows y para los programas que necesitan ejecutar programas Perl. Por ejemplo, los servidores web pueden tener configurado que permiten la ejecución de todos los ficheros que acaben en .cgi. Para Windows es importante, porque este sistema operativo asocia la extensión del fichero con el intérprete o programa que debe lanzar.