我在目录中有一个模块: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,但没有特别提及
请不要询问链表的事情。一点都不它与这个问题无关。
答案 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
*:请注意,这通常不被视为可接受的类名。类名通常是标题大小写,通常不包含下划线。