Tipps und Tricks zu Perl und CPAN-Modulen

Datenaustauch Perl/PHP mit PHP::Serialization

Beitrag von Uwe am 13.03.2007 um 17:30 Uhr | 0 Kommentare

Möchte man zwischen Perl und PHP Daten austauschen, gibt es verschiedene Wege. YAML und WDDX sind zwei Vertreter eines sprachunabhängigen Datenaustauschformats. Natürlich kann man sich auch ein textbasiertes Format selbst ausdenken oder auf XML zurückgreifen.

Doch das soll alles kein Thema für diesen Beitrag sein: Ich möchte Euch PHP::Serialization vorstellen. Der große Vorteil: Auf PHP-Seite wird eine eingebaute Funktion verwendet (was bei über 3.000 Funktionen ja keine Überraschung ist).

Die beiden Funktionen heißen serialize und unserialize. Nachfolgendes PHP-Programm zeigt diese "in Aktion":

<?php

error_reporting(E_ALL);

$data = $_REQUEST['data'];
$data = stripslashes($data);

$array = unserialize($data);

print serialize($array);

?>

Download: echo.php

Auf der Perl-Seite kommt folgendes Skript zum Einsatz:

#!/usr/bin/perl

use warnings;
use strict;

use Data::Dump qw(dump);

use LWP::UserAgent;
use PHP::Serialization;

my $test = [{lang => 'perl', name => 'uwe'},
            {lang => 'php',  name => 'manu'},
           ];

my $serialize = PHP::Serialization::serialize($test);
#print $serialize;

my $ua   = LWP::UserAgent->new;
$ua->credentials('manu:80', # :443 bei https
                 'My Realm', 'manu', 'manu',
                );

my $res  = $ua->post('http://manu/echo.php', {data => $serialize});
#print $res->as_string;

my $data = PHP::Serialization::unserialize($res->content);

dump($data);

Download: echo.pl

Das Programm ist zugleich ein Beispiel, wie man Basic Authentication mit LWP::UserAgent nutzt. Der erste Parameter von credentials setzt sich aus Host und Port zusammen (dafür habe ich ein paar Versuche gebraucht).

Ansonsten hoffe ich, daß die beiden Programme selbsterklärend sind. Fragen bitte als Kommentar stellen (dann haben auch andere Leser etwas davon).

Und wer sich fragt, warum manu so oft vorkommt - das ist meine Freundin (und sie ist PHP-Programmiererin).


Kommentar abgeben