PHP::Interpreter - futtassunk PHP-t Perlből
Bábeli zűrzavar című cikksorozatunkban kezdtünk el foglalkozni azzal a kérdéssel, hogy mit tehetünk, ha több nyelvet is fel szeretnénk, vagy valamilyen okból fel kell használnunk egy projekt során. Nos, a sorozat egyelőre csak az első résznél tart, a konkrét megoldásokat bemutató második és esetleges további részek még váratnak magukra. A nemrég megjelent PHP::Interpreter azonban annyira izgalmas újdonság, hogy bemutatásával nem várhatjuk ki a sorozat következő részeinek megjelenését.
Néhány napja íródott blog bejegyzésében hívta fel a figyelmet David Wheeler arra, hogy a népszerű Bricolage nevű tartalomkezelő legújabb változata immár támogatja a PHP-ben készült sablonok kialakítását is. A lehetőséget George Schlossnagle segítségével alakíttatták ki, és augusztus eleje óta mindenki számára elérhető CPAN modulként PHP::Interpreter néven. A PHP::Interpreter nem más, mint egy PHP 5 feldolgozó motor Perlhez, lehetővé téve PHP kódok végrehajtását Perlből, illetve Perl komponensek elérését PHP szkriptekben.
A következő Perl kód lehetőséget ad a parancssori paraméterben megadott PHP szkript végrehajtására:És a parancssorban akár a következő szkriptet is megadhatjuk, a példa erejéig a Perl DBI modulját használva adatbázis műveletek végrehajtására. A példa David Wheeler-ről származik:Ez amellett, hogy a Bricolage sablonjaiként most már PHP 5 szkriptek is használhatóak, az együttműködés teljesen új lehetőségeit nyitja meg a Perl és PHP fejlesztők számára.
■ Néhány napja íródott blog bejegyzésében hívta fel a figyelmet David Wheeler arra, hogy a népszerű Bricolage nevű tartalomkezelő legújabb változata immár támogatja a PHP-ben készült sablonok kialakítását is. A lehetőséget George Schlossnagle segítségével alakíttatták ki, és augusztus eleje óta mindenki számára elérhető CPAN modulként PHP::Interpreter néven. A PHP::Interpreter nem más, mint egy PHP 5 feldolgozó motor Perlhez, lehetővé téve PHP kódok végrehajtását Perlből, illetve Perl komponensek elérését PHP szkriptekben.
A következő Perl kód lehetőséget ad a parancssori paraméterben megadott PHP szkript végrehajtására:
use strict;
use PHP::Interpreter;
my $php = PHP::Interpreter->new;
$php->include(shift);
<?php
$perl = Perl::getInstance();
$perl->eval("use DBI");
$perl->eval("use DateTime");
$dbh = $perl->call("DBI::connect", "DBI", "dbi:SQLite:dbname=dbfile");
$dbh->do("CREATE TABLE foo (bar TEXT, time DATETIME)");
$now = $perl->call("DateTime::now", "DateTime");
$ins = $dbh->prepare("INSERT INTO foo VALUES (?, ?)");
$ins->execute("This is a test", $now);
$sel = $dbh->prepare("SELECT bar, time FROM foo");
$sel->execute();
$a = array("foo", "bar");
foreach ($sel->fetch() as $val) {
echo "$val\n";
}
$sel->finish();
$dbh->do("DROP TABLE foo");
$dbh->disconnect();
?>
Perl
Mr.Tiny
miért jó a perl?
ja
Elterjedtebb, de nem jobb.
Amúgy minden másra ott a PHP. Még a Perles dolokra is :)
Modulok
map
-eknek és agrep
-eknek.A valódi és biztos előnye, hogy "nincs az a nyelv" (tényleg, van az a nyelv?), amihez ennyi modul lenne, ilyen gazdag témaválasztékban.
-boogie-
Ezért jó a perl
Bár néhol eléggé igazságtalan a PHP-val szembem, de nagyrészt igaza van. Szerintem a fenti oldalon leírt dolgok miatt jobb a perl.
Igaz, PHP5-öt még nem ismerem, az akár még jó is lehet (de nemrég tudtam meg, hogy a unicode support kimaradt belőle).
jazzkutya
CPAN
Nem tudom, érdekel milyen
Mr.Tiny