— Perl arrays — | — Php arrays — | @a = (); @a = ( 'xx', 11, 33.5, ); @a = 12..33; $a[2] = 'something'; $len = scalar(@a);# or$len = @a; @a3 = ('xx', @a1, @a2); ($x, $y) = @a; $a[@a] = 'new'; # push pushpopshiftunshiftsplice foreach $i (@a) { .. }
$a = array(); $a = array( 'xx', 11, 33.5, ); $a = range(12,33); $a[2] = 'something'; $len = count($a); $a3 = array_merge('xx', $a1, $a2); list($x, $y) = $a; $a[] = 'new'; # push array_pusharray_poparray_shiftarray_unshiftarray_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 data structures — | — Php data structures — | %h = ('a'=>13, 'b'=>25);@x = ('hi', 'there', 'all',); @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('hi', 'there', 'all',); $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 case conversion — | — Php case conversion — | $s = lc($s);$s = uc($s); $s =~ tr/a-z/A-Z/;
$s = strtolower($s);$s = strtoupper($s);
— Perl string comparisons — | — Php string comparisons — | $s1 eq $s2 $s1 lt $s2
strcmp($s1,$s2) == 0# or$s1 === $s2 strcmp($s1,$s2) < 0
— Perl functions — | — Php functions — | 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 string matching operations— | — Php string matching operations— | $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 environment variables— | — Php environment variables— | %ENV $ENV{REQUEST_METHOD} $ARGV[$i] $0
$_SERVER $_SERVER[REQUEST_METHOD] $argv[$i+1] $argv[0] # Php/CGI only
— Perl POST/GET parameters — | — Php POST/GET parameters — | #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 HTML elements — | — Php HTML elements — | 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 database access— | — Php MySQL database access— | 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) . "'"