#!/usr/bin/perl -w

use serialize;

=pod

This is a sample perl script to test the serialize.pm module.

Once you run this script, take the output and paste it
into "test.php" to see how PHP de-serializes this modules
output

=cut

# Array to test serialization on
my @j = (2,4,10,[11,12,13]);

# Hash to test serialization on
my %h = (
    1		=> 'Yes',
    0		=> 'No',
    'name'	=> "Scott Hurring",
    'email'	=> "scott (at) hurring.com",
    'age'	=> 21.85,
    'null'	=> "NULL",
    'numbers'	=> [1,2,3,4],
    'music'	=> {
	'doors'	=> 'Strange Days',
	'numan' => 'Telekon'}
);

print "Printing original hash\n";
dump_hash(\%h, []);
print "-" x 40 ."\n\n";

print "Printing serialized hash\n";
my $sh = serialize(\%h);
print "$sh\n\n";
print "-" x 40 ."\n\n";

print "Printing unserialized hash\n";
my $uh = unserialize($sh);
dump_hash($uh, []);
print "-" x 40 ."\n\n";

exit;

print "-" x 80 ."\n\n";

print "Printing original hash\n";
dump_array(\@j, []);
print "-" x 40 ."\n\n";

print "Printing serialized hash\n";
my $sj = serialize(\@j);
print "$sj\n\n";
print "-" x 40 ."\n\n";

print "Printing unserialized hash\n";
my $uj = unserialize($sj);
dump_hash($uj, []);
print "-" x 40 ."\n\n";

exit;


sub dump_hash {
    my ($hashref, $offset) = @_;
    
    foreach my $k (keys %{$hashref}) {
	
	print join ("",@$offset) . "$k = $$hashref{$k}\n";
	
	if (ref($$hashref{$k}) =~ /hash/i) {
	    push (@$offset, "\t");
	    &dump_hash($$hashref{$k}, $offset);
	    pop @$offset;
	}
	
    }
    return 1;
}
sub dump_array {
    my ($arrayref, $offset) = @_;
    
    foreach my $k (@{$arrayref}) {
	
	print join ("",@$offset) . "$k\n";
	
	if (ref($k) =~ /array/i) {
	    push (@$offset, "\t");
	    &dump_array($k, $offset);
	    pop @$offset;
	}
	
    }
    return 1;
}