perl:如何使用我自己的对象?

时间:2014-12-12 05:18:54

标签: perl

我在目录中有一个模块:cs351 / linked_list / LinkedList:

package cs351::linked_list::MyLinkedList;

sub mynew { ...

测试文件位于cs351:

use strict;
use warnings;
use lib 'cs351';
use linked_list::MyLinkedList;

my $test = MyLinkedList->mynew();

输出:

perl test_linked_list.pl | grep 'nothing'
Can't locate object method "mynew" via package "MyLinkedList" (perhaps you forgot to load "MyLinkedList"?) at test_linked_list.pl line 6.

我只是想从perl初学者书中创作一些东西。我检查了perlootut,但没有特别提及

请不要询问链表的事情。一点都不它与这个问题无关。

1 个答案:

答案 0 :(得分:4)

您对此称之为的内容并不一致。

在您提供的代码段中,您使用三种不同的包名来引用您的类:

  • cs351::linked_list::MyLinkedList(在package声明中)

  • linked_list::MyLinkedList(在use声明中)

  • MyLinkedList->mynew(尝试调用函数时)

这不正确。包名称是标识符,而不是路径;他们不会根据你所处的位置而改变。

假设您的包位于名为cs351/linked_list/LinkedList.pm的文件中,引用它的正确方法是linked_list::LinkedList(注意*):

  • package linked_list::LinkedList;

  • use linked_list::LinkedList;

  • linked_list::LinkedList->mynew


*:请注意,这通常不被视为可接受的类名。类名通常是标题大小写,通常不包含下划线。