我有一个我们正在学习Perl的课程,所以如果我在我仍然学习时犯了一个简单/明显的错误,请原谅我。我的问题是,为什么我得到的错误全球符号需要包名称,当使用“我的”在Sub
全局符号“%localhash”需要明确的包名
以及为“$参数”当我与声明它同样的错误“我%localhash“在Sub中第一次。
我参考代码:
use strict;
use warnings;
use Exporter;
use vars qw(@ISA @EXPORT);
@ISA=qw(Exporter);
@EXPORT=("insert_user", "modify_user", "remove_user", "generate_list");
#Insert user Function
Sub insert_user{
my $param = shift;
my %localhash = %$param;
print "Please enter Username: ";
my $user_name = <>;
chomp($user_name);
if(exists ($localhash{$user_name})){
print "Error, user already exists!";
last;
}
$user_name =~ s/[^a-zA-Z0-9]//g;
$user_name = lc($user_name);
$localhash{$user_name};
return %localhash;
print "Please enter a password: ";
my $user_password = <>;
%localhash{$user_name} = $user_password;
return %localhash;
}
在我的课堂上,我们是想用“我的$参数”和“我的%localhash”不同的时间,所以我会重复同样的过程在“我”的声明每个小组,但我不断得到相同的错误,就好像“我的”不在那里一样。
'%localhash {$ USER_NAME} = $ USER_PASSWORD;' - 这条线应该是'$ localhash {$ user_name}',不是?你为什么基本上破坏了代码而不是'return%localhash;'在它的中间? ) – raina77ow
'Sub'应该是'sub' – toolic
,你不应该在循环之外使用最后一个 – ysth