perl:变量需要显式包名错误吗?

时间:2014-12-12 22:52:25

标签: perl

我有这个功能:它应该只通过自定义链表打印:

sub myprint {
    my $iter = shift->{top};
    my $refType = ref($iter);
    while ($refType -ne "SCALAR") { #44
        print $iter->{data};
        $iter=$iter->{prev}; 
        $refType = ref($iter);
    }
}

错误:

jddancks@GIGABYTE-SERVER:/media/20B9-BF25/perl/OOP$ perl test_linked_list.pl
syntax error at cs351/linked_list/MyLinkedList.pm line 44, near "-ne"
Global symbol "$iter" requires explicit package name at cs351/linked_list/MyLinkedList.pm line 46.
Global symbol "$iter" requires explicit package name at cs351/linked_list/MyLinkedList.pm line 46.
Global symbol "$refType" requires explicit package name at cs351/linked_list/MyLinkedList.pm line 47.
Global symbol "$iter" requires explicit package name at cs351/linked_list/MyLinkedList.pm line 47.
syntax error at cs351/linked_list/MyLinkedList.pm line 48, near "}"
Compilation failed in require at test_linked_list.pl line 3.
BEGIN failed--compilation aborted at test_linked_list.pl line 3.

1 个答案:

答案 0 :(得分:4)

永远不要相信语法错误后出现的错误。

在第44行,-ne是一个错误,它应该是ne(你可能在考虑shell而不是perl)。

修复此问题,其他错误将消失,或者至少会留下您可以信任并执行某些操作的其他错误。