installed functions currently php perl

functions - ¿Cómo puedo obtener la simplicidad de PHP(implementación) pero la potencia de Perl?



php 7 (12)

Desprecio el lenguaje PHP, y estoy bastante seguro de que no estoy solo. Pero lo mejor de PHP es la forma en que mod_php toma y oculta los detalles sangrientos de la integración con el tiempo de ejecución de Apache, y logra un aislamiento de solicitud similar al CGI y un rendimiento decente.

¿Cuál es el enfoque de distancia más corta para obtener la misma simplicidad, velocidad y aislamiento que el entorno de tiempo de ejecución de PHP, con la semántica de Perl? Siento que el mod_perl puro me da demasiada cuerda para colgarme: programas globales de solicitud cruzada, configuraciones desordenadas, demasiados motores de plantillas para elegir.

FastCGI? HTML :: Mason? Me gustaría hacer desarrollo principalmente en Perl, si tan solo tuviera un marco que me permitiera.


Mira Catalyst este framework MVC (modelo, vista, controlador) funciona de forma independiente o con apache_perl y oculta muchos de los bits desordenados. Hay una curva de aprendizaje algo extraña (inicio rápido, centro más lento, luego realmente hace clic para cosas avanzadas).

Catalyst le permite usar Template Toolkit para separar la lógica de diseño de la lógica comercial. Template toolkit es realmente genial, incluso si decide no usar Catalyst, entonces debería usarlo. HTML :: Mason no es algo que a mí personalmente me guste, aunque si haces todo el HTML tú mismo, quizás quieras revisar Template :: Declare, que es otra alternativa que también puedes usar con Catalyst.

Para las cosas de la base de datos mira DBIx :: Class , que una vez más funciona con Catalyst o por sí mismo.


Yo recomendaría Catalyst con FastCGI. Además, para plantillas, Template :: Toolkit es mi favorito personal, pero HTML :: Mason también es muy apreciado en la comunidad.


Cosas como Catalyst y CGI :: Application son más equivalentes de Zend Framework en lugar de PHP. Para replicar la funcionalidad básica para crear páginas web que PHP ofrece "al instante", entonces necesita dos módulos de CPAN que deberían estar disponibles en cada instalación base de Perl:

use CGI; use DBI;

Es todo lo que realmente necesitas Ahora en lugar de:

$_POST[''param''] $_GET[''param'']

tienes:

my $q = new CGI; $q->param(''param''); # same for post or get

Y en lugar de:

$dbh = mysql_connect(''localhost'', ''mysql_user'', ''mysql_password''); $sth = mysql_query("SELECT 1 FROM table", $dbh); while($row = mysql_fetch_assoc($sth)) { // do something with $row }

Tienes:

my $dbh = DBI->connect(''DBI:mysql:host=localhost;'', ''mysql_user'', ''mysql_password''); my $sth = $dbh->prepare("SELECT 1 FROM table"); $sth->execute(); while(my $row = $sth->fetchrow_hashref) { # do stuff with row }

El código DBI es un poco más complicado porque ofrece declaraciones preparadas y variables vinculadas para que no tenga que preocuparse por las inyecciones de SQL. PHP no ofrece esto, por lo que debe usar algo como PDO o escribir su propia clase de base de datos.

Lo único que queda es si quería salida de HTML en un script. Pero no quieres eso, ¿verdad? Utiliza HTML :: Template o Template :: Toolkit para eso, de la misma manera que debería usar Smarty o plantillas nativas en PHP.


El equivalente más cercano y bien considerado de PHP en Perl es probablemente HTML :: Mason .

Al igual que PHP, incorpora Perl en su documento y lo renderiza:

% my $noun = ''World''; Hello <% $noun %>! How are ya?

El libro de O''Reilly Embedding Perl en HTML con Mason está disponible en línea de forma gratuita.


El ya mencionado Catalyst es una excelente herramienta para construir aplicaciones web enteras, pero de ningún modo es ni de lejos simple. La principal ventaja de PHP es que puede incrustar pequeños fragmentos de la misma según sea necesario en páginas que de otro modo serían estáticas, es decir, puede hacer:

<html> <body> <p>The value of 2+2 is: <?php echo 2+2; ?></p> <p>The value of 2+2 is: <?php echo 2+2; ?></p> </body></html>

y mira en tu navegador web:

The value of 2+2 is: 4

Si intentas hacer algo como esto con Catalyst (hasta donde yo sé), estás desarrollando una aplicación completa con múltiples archivos para imprimir un valor simple. Al menos, no hay explicación de cómo hacer incrustaciones simples en los tutoriales que vi.

Afortunadamente, este nivel de simplicidad se puede alcanzar con Mason, que de alguna manera (gracias al poder de Perl) puede ser incluso más simple. El ejemplo de arriba dice:

<html><body><p>The value of 2+2 is: <% 2+2 %></p></body></html>

y obtienes el mismo resultado.

No hay ninguna razón por la cual no pueda comenzar instalando y trabajando con Mason y luego instale Catalyst junto con él, sin embargo, si planea pasar a proyectos muy complejos, puramente impulsados ​​por Perl más adelante.


Hay muchas posibilidades, dependiendo de lo que quieras hacer.

Si desea aprovechar la velocidad de mod_perl, pero la simplicidad de CGI de vanilla, consulte la distribución de Modperl :: Registry desde CPAN. Esto le permitirá ejecutar sus scripts CGI sin cambios en gran medida.

En términos de frameworks, soy un gran fanático de CGI :: Application . Proporciona un marco basado en la herencia muy simple que maneja la mayor parte de todo lo que una aplicación web deberá hacer, lo que le brinda la libertad de diseñar su aplicación de la forma que desee. Una aplicación simple se puede hacer de forma monolítica; uno más complejo puede usar un diseño MVC con todas las de la ley . Al igual que Perl en general, la aplicación CGI te brinda muchas opciones y, en general, se mantiene fuera de tu camino.

CGI-App es compatible con el excelente módulo HTML :: Template de forma predeterminada, y tiene complementos para otros sistemas de plantillas, como el espectacular Template Toolkit . También hay una plétora de complementos para otros fines.

Si quieres más trabajo para ti, echa un vistazo a Catalyst . Esta forma de hacer las cosas puede ser más familiar si has usado Ruby on Rails.

Otros marcos populares de aplicaciones web incluyen Jifty y CGI :: Prototype , escritos por Randal Schwartz, que se basa en el marco de objetos Class :: Prototyped .


Me pregunto qué pasó con mod_perlite , que te proporcionará exactamente lo que buscas.


Estoy de acuerdo con Aristóteles. mod_perlite suena exactamente como lo que estás buscando, si solo estuviera terminado.


Lo más cercano a PHP en términos de simplicidad es HTML :: Mason.

Sugerir Catalyst es un mal chiste para alguien que busca simplicidad ... Y estoy feliz trabajando con Catalyst todos los días.


Acabo de ver a Dancer . Parece que esta podría ser una buena opción.



He trabajado con HTML :: Mason, primero hackear RT y luego crear dos sitios con él. Hay una curva de aprendizaje, pero no está mal. Peor aún, creo, es instalar la cosa, pero eso tiene mucho más que ver con Apache y mod_perl que con Mason. Una vez que las piezas están en su lugar, es solo tan complicado como lo haces (como el propio Perl).