PDL function call failing

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.
 
S

Slaven Rezic

Mark Ohlund said:
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;

This looks like invalid perl to me.
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.

It's probably best to ask the module author about this.

Regards,
Slaven
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,020
Latest member
GenesisGai

Latest Threads

Top