2014-09-10 3 views
3

Я пытаюсь использовать модуль CPAN: Math::Vector::Real::NeighborsPerl CPAN метод объекта модуль не найден ошибка

я вижу следующее сообщение об ошибке:

Не удается найти метод объекта «окно» с помощью пакета " Math :: Vector :: Real»на /usr/local/share/perl/5.14.2/Math/Vector/Real/Neighbors.pm линии 12.

Итак, я иду в пакет и увидеть это : my ($bottom, $top) = Math::Vector::Real->box(@_);

Далее, я иду в Real.pm пакет по адресу: /usr/local/share/perl/5.14.2/Math/Vector/Real.pm

Я вижу рутину окно суб существует в нем: sub box {...

Любой идею, почему ошибка может быть появляющейся?

+0

Что происходит до этого в сценарии - ты создал Math :: Vector :: Реальный объект? –

+2

добавить 'use Math :: Vector :: Real;' сразу после 'use strict; используйте предупреждения, ' – jm666

+0

@ jm666 Это отвечает на вопрос ... Я использовал этот пример на странице synopsys as-is ... my bad ... извините – sanjay

ответ

7

Вам нужно добавить use Math::Vector::Real в начало вашего скрипта, чтобы получить Math :: Vector :: Real :: Соседи по работе. Следующий код работает, как ожидалось:

use strict; 
use warnings; 

use Math::Vector::Real; 
use Math::Vector::Real::Neighbors; 
use Math::Vector::Real::Random; 

my @v = map Math::Vector::Real->random_normal(2), 0..1000; 
my @nearest_ixs = Math::Vector::Real::Neighbors->neighbors(@v); 

Но обратите внимание, что он не работает без линии использование Math :: Вектор :: Real.

+1

Примечание. Я отправил запрос на перенос в репозиторий github автора, чтобы добавить это в документы. –

2

Я являюсь автором Math :: Vector :: Реальная семья модулей Perl.

В настоящее время для того, чтобы найти соседей для множества точек, алгоритм предоставляется в Math::Vector::Real::kdTree намного лучше:

my @v = ...; 
my $kdtree = Math::Vector::Real::kdTree->new(@v); 
my @nearest_ixs = $kdtree->find_nearest_vector_all_internal; 
Смежные вопросы