en: Diseño|Programacion
Hoy en día Php es uno de los lenguajes web más populares, y los programadores que hoy trabajan con PHP están considerando seriamente migrar a Ruby on Rails como una opción para próximos proyectos, y si no lo están considerando posiblemente lo consideraran en un futuro.
Hace seis años Perl era el indiscutible lider dentro de los lenguajes de programación orientados al desarrollo de aplicaciones web. Python, Ruby y otros lenguajes estaban empezando, pero sin embargo hoy en día podríamos decir que Perl esta muriendo, muchos dirán pues “que se muera” y sin embargo otros dirán “muérete tú”… un dato que tenemos que tener en cuenta es que PHP nació gracias a Perl y hay que decir que hay muchos aspectos en los que son muy parecidos, por lo tanto es inutil crear una discusión sobre cúal es mejor porque eso es muy relativo, ha aquellos que digán que Perl no sirve para nada les recomiendo hacer un script en perl y otro php que recorra un listado de 1.000.000 de lineas, y calcule el tiempo que tarda cada uno en devolver el resultado, con ese ejemplo bastará para apreciar la potencia de un lenguaje que fue innovador y precursor de otros lenguajes como PHP.
En definitiva que los diferentes lenguajes van evolucionando cómo muestra esta imagen:
Y si vais a cambiar de lenguaje que mejor que una guía para poder migrar más facilmente… Por eso aquí os dejo esta guía para migrar tus scripts de Php a Perl y viceversa.
— Perl arrays — |
— Php arrays — |
---|---|
@a = (); @a = ( 'xx', 11, 33.5, ); @a = 12..33; $a[2] = 'algo'; $len = scalar(@a); # or $len = @a; @a3 = ('xx', @a1, @a2); ($x, $y) = @a; $a[@a] = 'new'; # push push pop shift unshift splice foreach $i (@a) { .. } |
$a = array(); $a = array( 'xx', 11, 33.5, ); $a = range(12,33); $a[2] = 'algo'; $len = count($a); $a3 = array_merge('xx', $a1, $a2); list($x, $y) = $a; $a[] = 'new'; # push array_push array_pop array_shift array_unshift array_splice foreach ($a as $i) { .. } |
— Perl hashes — | — Php hashes — |
---|---|
%h = (); %h = ( 'x' => 'y', 'z' => 'w', ); $h{'x'} = 7; while (($key,$value) = each(%h)) { .. } $a = keys(%h); $b = values(%h); delete $h{'x'}; |
$h = array(); $h = array( 'x' => 'y', 'z' => 'w', ); $h['x'] = 7; foreach ($h as $key => $value) { .. } $a = array_keys($h); $b = array_values($h); unset( $h['x'] ); |
— Perl Estructuras de Datos — | — Php Estructuras de Datos — |
---|---|
%h = ('a'=>13, 'b'=>25); @x = ('hola', 'alli', 'todos',); @mix = ( \%h, \@x, [33..39], { x=>15, yy=>23, }, ); $mix[0]->{'b'} # == 25 $mix[0]{'b'} # == 25 $mix[2]->[2] # == 35 $mix[2][2] # == 35 |
$h = array('a'=>13, 'b'=>25); $x = array('hola', 'alli', 'todos',); $mix = array($h, $x, range(33,39), array('x'=>15, 'yy'=>23), ); $mix[0]['b'] # == 25 $mix[2][2] # == 35 |
— Perl array split/join — | — Php array split/join — |
---|---|
@a = split( '\|', $s ); @a = split( '\s+', $s ); $s = join( '|', @a ); |
$a = preg_split( '/\|/', $s, -1, PREG_SPLIT_NO_EMPTY ); $a = preg_split( '/\s+/', $s, -1, PREG_SPLIT_NO_EMPTY ); $s = join( '|', $a ); |
— Perl Conversión de Palabras — |
— Php Conversión de Palabras — |
---|---|
$s = lc($s); $s = uc($s); $s =~ tr/a-z/A-Z/; |
$s = strtolower($s); $s = strtoupper($s); |
— Perl Comparacion de Cadenas — | — Php Comparacion de Cadenas — |
---|---|
$s1 eq $s2 $s1 lt $s2 |
strcmp($s1,$s2) == 0 # or $s1 === $s2 strcmp($s1,$s2) < 0 |
— Perl Funciones — | — Php Funciones— |
---|---|
sub foo { my @args = @_; } sub foo { $x = 5; } foo2( \@a, \%h ); |
function foo() { $args = func_get_args(); } function foo() { global $x; $x = 5; } function foo2($x, $y) { } foo2( $a, $h ); |
— Perl Operaciones con cadenas — |
— Php Operaciones con cadenas — |
---|---|
$s =~ m/(\w+)/; $substr = $1; @all = ($s =~ m/(\w+)/g); $s =~ s/\s+/X/; $s =~ s/\s+/X/g; $s =~ s/^\s+|\s+$//g; |
preg_match( "/(\w+)/", $s, $match ); $substr = $match[1]; preg_match_all( "/(\w+)/", $s, $match ); $all = $match[0]; $s = preg_replace( "/\s+/", 'X', $s, 1 ); $s = preg_replace( "/\s+/", 'X', $s ); $s = trim($s); |
— Perl basename/dirname — | — Php basename/dirname — |
---|---|
use File::Basename; $b = basename($path); $d = dirname($path); |
$b = basename($path); $d = dirname($path); |
— Perl Variables de entorno — | — PhpVariables de entorno— |
---|---|
%ENV $ENV{REQUEST_METHOD} $ARGV[$i] $0 |
$_SERVER $_SERVER[REQUEST_METHOD] $argv[$i+1] $argv[0] # Php/CGI only |
— Perl POST/GET parametros — | — Php POST/GET parametros — |
---|---|
#form/hyperlink parameters: # s : single-valued # m : multi-valued use CGI (:standard); $s = param('s'); @m = param('m'); @param_names = param(); $num_params = param(); |
#form/hyperlink parameters: # s : single-valued # m[] : multi-valued # (such as multi-selections # and checkbox groups) $PARAM = array_merge($_GET, $_POST); $s = $PARAM['s']; # a scalar $m = $PARAM['m']; # an array $param_names = array_keys($PARAM); $num_params = count($PARAM); |
— Perl Elementos HTML — |
— Php Elementos HTML — |
---|---|
use CGI (:standard); $ref = "x.cgi"; a({href=>$ref}, "yy") textfield({name=>"yy", size=>5}) password({name=>"yy", size=>5}) textarea({name=>"yy", cols=>5, rows=>2}) submit({value=>"yy"}) button( {name=>"xx", value=>"yy", onclick=>"submit()", } ) %labels = (0=>'a',1=>'q',2=>'x'); popup_menu( { name=>"xx", values=>[0..2], labels=>\%labels, size=>4, } ) @a = ('xx','yy','zz'); radio_group( { name=>'nn', values=> \@a, default=>'_', linebreak=>1, } ) %labels = ('xx'=>'L1','yy'=>'L2'); @a = keys( %labels ); checkbox_group( { name=>'nn', values=> \@a, labels=> \%labels, } ) table( Tr( [ td(['a','b']), td(['x','y']), ] ) ) |
# The Perl/CGI functions have the # additional property of "stability" # when used in reentrant forms. # The values of the HTML elements are # set according to the incoming # parameter values for those elements. # The versions below are not stable. $ref = "x.php"; <a href="<?php echo $ref?>">yy</a> <input type=text name=yy size=5> <input type=password name=yy size=5> <textarea name=yy cols=5 rows=2> </textarea> <input type="submit" value=yy> <input type="button" name="xx" value="yy" onclick="submit()"> <select name="xx" size="4"> <?php $labels = array(0=>'a',1=>'q',2=>'x'); foreach (range(0,2) as $_) echo "<option value='$_'>", $labels[$_]; ?> </select> $a = array('xx','yy','zz'); foreach ($a as $_) echo "<input type=radio name=nn value='$_'>$_<br>"; $labels = array('xx'=>'L1','yy'=>'L2'); foreach (array_keys($labels) as $_) echo "<input type=checkbox name=nn value='$_'>", $labels[$_]; <table> <tr> <td>a</td><td>b</td> </tr> <tr> <td>x</td><td>y</td> </tr> </table> |
— Perl URL encode — |
— Php URL encode — |
---|---|
use URI::Escape; uri_escape($val) uri_unescape($val) |
urlencode($val) urldecode($val) |
— Perl MySQL Acceso a Bases de datos — |
— PhpMySQL Acceso a Bases de datos— |
---|---|
use DBI; $dbh = DBI->connect( 'DBI:mysql:test:localhost', $usr,$pwd ); $dbh->do( $sql_op ) $query = $dbh->prepare( $sql_op ); $query->execute(); while( @record = $query->fetchrow() ) { .. } $dbh->quote($val) |
$dbh = mysql_connect( 'localhost', $usr, $pwd ); mysql_query('USE test') mysql_query( $sql_op ); $results = mysql_query( $sql_op ); while($record = mysql_fetch_row($results)) { .. } "'" . addslashes($val) . "'" |
Guía para migrar de Php a Perl y viceversa
Generar passwords accesibles con Php
Codigo Fuente del generador de passwords en PHP
Ejemplo de ejecución del script
PHP y MySql una estrecha relación
5 cosas que no sabías hacer con PHP
Generar documentos OpenOffice con PHP
Nueva versión de Notepad++
Hola Mundo!
Identificar las consultas más lentas de MySql
Crea sencillas gráficas con MySql
Programar un script PHP para saber quién está en línea
Consejos para optimizar PHP
Editando en Opera páginas web en tiempo real