Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Perl (http://www.velocityreviews.com/forums/f17-perl.html)
-   -   PDL function call failing (http://www.velocityreviews.com/forums/t25010-pdl-function-call-failing.html)

Mark Ohlund 05-01-2004 11:20 PM

PDL function call failing
 
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.


Slaven Rezic 05-02-2004 08:48 AM

Re: PDL function call failing
 
Mark Ohlund <ohlund@woodwrecker.com> writes:

> 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

--
Slaven Rezic - slaven@rezic.de

tkruler - Perl/Tk program for measuring screen distances
http://ptktools.sourceforge.net/#tkruler


All times are GMT. The time now is 04:29 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.