"Can't locate object method "Perl 中使用 AI::Pathfinding::AStar CPAN 模块的新“[...]”

"Can't locate object method "new" [...]" in Perl using the AI::Pathfinding::AStar CPAN module

这是我在 Perl 中做的第一个 "serious" 事情,所以如果问题有点愚蠢,请原谅我。

我想尝试一下 A* 寻路算法。我找到了 AI::Pathfinding::AStar CPAN 模块,基本上是在尝试让给定的示例正常工作。

首先,我将示例分成两个文件,因为我不知道如何使 use My::Map::Package; 与单个文件中的所有内容一起工作。我想出了以下两个文件:

MyAstar.pm:

package MyAstar;
use warnings;
use strict;
use base "AI::Pathfinding::AStar";

my %NODES = get_all_nodes();
sub get_all_nodes {...}
sub getSurrounding {...}

main.pl:

#!/usr/bin/env perl

package main;
use lib '/home/foo/astar/';
use warnings;
use strict;
use MyAstar;

my $map = MyAstar->new or die "No map for you!";
my $path = $map->findPath(1, 5);
print join(', ', @$path), "\n";

当我执行 main.pl 时,出现以下错误:

Can't locate object method "new" via package "MyAstar" at main.pl line 9.

我不确定这里有什么问题。我原以为 AI::Pathfinding::AStar 包中会有一个名为 new 的子程序,但找不到它。是 CPAN 模块坏了还是我做错了什么?

您尝试调用一个函数(MyAstar->new,通常用作构造函数),但您没有定义它。 Perl 中没有默认构造函数(例如 Java)。

将这样的内容添加到您的 MyAstar.pm:

sub new {
    my $class = shift;
    my $self = bless{}, $class;
    # initialize $self here as needed, maybe using any passed arguments in @_
    return $self;
}