【求助】如何从模块中输出函数和变量

【求助】如何从模块中输出函数和变量

模块代码如下:

[Copy to clipboard] [ - ]
CODE:
#\Parse\Net.pm
package Net;

use warnings;
use strict;

our(@ISA, @EXPORT);

require Exporter;

@ISA = qw(Exporter);
@EXPORT= qw(&readNet %Index_EC);

my %Index_EC;

#
# sub readNet($filename), change the value of %Index_EC, output 1 if success
#
sub readNet{
    my $filename = shift;
   
     #do sth with %Index_EC;

    return 1;
}

1

主程序如下:

[Copy to clipboard] [ - ]
CODE:
#testNetPm.pl
#!/usr/bin/perl -w

use strict;
use lib 'd:\work\script\PerLib';           #自己定义的perllib路径,正确的
use Parse::Net qw(readNet %Index_EC);           
use Data::Dumper;                              #for test

my $filename = shift;

if (readNet($filename) == 1) {
        print Dumper(%Parse::Net::Index_EC);
}

我不知道哪里错了,运行的时候总是报错:
Name "Parse::Net::Index_EC" used only once: possible typo at testNetPm.pl line 27.
Undefined subroutine &main::readNet called at testNetPm.pl line 26.

对于“Undefined subroutine &main::readNet called at testNetPm.pl line 26.”这个问题,我又把主程序最后一段改为

[Copy to clipboard] [ - ]
CODE:
if (Parse::Net::readNet($filename) == 1) {
        print Dumper(%Parse::Net::Index_EC);
}

还是报同样的错。
请高手帮忙看看是哪里出现了问题呢?而且,我一直都很糊涂,什么时候需要加类似Parse::Net::这样的前缀,什么时候不用加也可以运行的很好啊?(上次误打误撞写了个module用,主程序什么都没加也运行良好,很糊涂啊),谢谢大家!

你的包名字不对。
把 package Net; 改成 package Parse::Net; 就好了。
哦,是的,谢谢啊!