PDL code

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

Anno Siegel

[snip]
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.

No, the error message would be different ("Can't modify index in
concatenation (.) or string at..."). It's calling a user-defined
sub alright, and the sub *would* have to be an lvalue sub for the
modification to work. It looks like you have found a bug.

Anno
 

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

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top