M
Mark Ohlund
I'm trying to use the PDL modules to perform a Vector Space search as
shown in: http://www.perl.com/pub/a/2003/02/19/engine.html
I'm running FreeBSD 4.9 w/ Perl 5.6.1 and 2.4.1 of PDL.
The source code for the search is:
http://www.perl.com/2003/02/19/examples/VectorSpace.pm
I'm calling this with the following code:
#!/usr/bin/perl
use Search::VectorSpace;
my @docs = ("the cat in the hat.", "A cat is a fine pet.",
"Dogs and cats make good pets.", "I haven't got a hat.");
my $engine = Search::VectorSpace->new( docs => \@docs, threshold => .04);
$engine->build_index();
while ( my $query = <STDIN> ) {
my %results = $engine->search( $query );
print join "\n>>", keys %results;
}
When I call the VectorSpace code, I get an error at line 180:
Can't modify non-lvalue subroutine call in concatenation (.) or string
at /usr/local/lib/perl5/5.6.1/Search/VectorSpace.pm line 180, near "$value;"
Line 180 is:
index( $vector, $offset ) .= $value;
I *think* the problem is that rather than using the PDL index function
which should set the value of the PDL vector object at $offset to
$value, Perl thinks I'm trying to access the intrinsic Perl index
function. I've tried prefacing the index call with PDL:: to no avail.
Does anyone have insight into what I may be doing wrong? I'll admit my
Perl is pretty rusty, but making use of this search would be a big help.
Thanks.
Mark.
shown in: http://www.perl.com/pub/a/2003/02/19/engine.html
I'm running FreeBSD 4.9 w/ Perl 5.6.1 and 2.4.1 of PDL.
The source code for the search is:
http://www.perl.com/2003/02/19/examples/VectorSpace.pm
I'm calling this with the following code:
#!/usr/bin/perl
use Search::VectorSpace;
my @docs = ("the cat in the hat.", "A cat is a fine pet.",
"Dogs and cats make good pets.", "I haven't got a hat.");
my $engine = Search::VectorSpace->new( docs => \@docs, threshold => .04);
$engine->build_index();
while ( my $query = <STDIN> ) {
my %results = $engine->search( $query );
print join "\n>>", keys %results;
}
When I call the VectorSpace code, I get an error at line 180:
Can't modify non-lvalue subroutine call in concatenation (.) or string
at /usr/local/lib/perl5/5.6.1/Search/VectorSpace.pm line 180, near "$value;"
Line 180 is:
index( $vector, $offset ) .= $value;
I *think* the problem is that rather than using the PDL index function
which should set the value of the PDL vector object at $offset to
$value, Perl thinks I'm trying to access the intrinsic Perl index
function. I've tried prefacing the index call with PDL:: to no avail.
Does anyone have insight into what I may be doing wrong? I'll admit my
Perl is pretty rusty, but making use of this search would be a big help.
Thanks.
Mark.