package Foo;
sub get_data { $_[0]->{data} }
package main;
use strict;
use warnings;
use Bar;
my $blackbox = bless {
data => "\x3foo\x3bar\x3bazasdfasdfasdfasdf",
}, Foo;
my $object = Bar->new;
my $deserialized = [ $object->deserialize( $blackbox ) ];
is_deeply($deserialized, [ qw(foo bar baz) ],
"Deserializer decodes correctly");
####
sub deserialize {
my ($self, $blackbox) = @_;
# capture up to 16-byte random sentinel.
$blackbox->get_data =~ s/
(.*?)
(?:
$self->{record_separator} | $
)
//xsm or confess("no match");
return unpack("(w/a)*", $1);
}
##
##
# time to index 1000 documents:
Plucene 1.25 276 secs
Kinosearch 0.021 88 secs
Kinosearch 0.03_02 35 secs
Java Lucene 13 secs