我是perl的新手新手。我正在尝试创建一个返回哈希值的函数。下面的代码只返回哈希的最后一个索引。我用Google搜索,无法找到我需要的东西。感谢是否有人能告诉我哪里出错了。
我期待,如果我通过“he_1”,我应该得到1的返回值等等。但我看到的只有9个。
#!/usr/bin/perl
my %IndexMap = ();
my $MAX_V = 5;
my $MAX_T = 10;
sub InitIndexMap {
foreach my $i (0..$MAX_V-1) {
$IndexMap["he_".$i] = $i;
print "he_".$i;
print $IndexMap["he_".$i];
}
foreach my $i ($MAX_V..$MAX_T-1) {
$IndexMap["un".$i] = $i;
print "un".$i;
print $IndexMap["un".$i];
}
}
sub GetVal {
my ($name) = @_;
return $IndexMap[$name];
}
&InitIndexMap();
my ($index) = &Getval("he_4");
print $index;
答案 0 :(得分:7)
要读取哈希,请使用花括号,而不是括号。试试这个:
sub InitIndexMap {
foreach my $i (0..$MAX_V-1) {
$IndexMap{ "he_" . $i } = $i;
print "he_".$i;
print $IndexMap{ "he_" . $i };
}
foreach my $i ($MAX_V..$MAX_T-1) {
$IndexMap{ "un" . $i } = $i;
print "un".$i;
print $IndexMap{ "un" . $i };
}
}
sub GetVal {
my ( $name ) = @_;
return $IndexMap{ $name };
}
您应该将其添加到脚本的顶部:
use strict;
use warnings;
总是能够改变这些pragma的规则。他们发出的警告和错误可能会导致您回答问题。
答案 1 :(得分:3)
您应该使用{和}等大括号访问哈希。
$hash_name{$key} = $value
;
在你的例子中。
$IndexMap{"he_".$i} = $i
;
你应该考虑做一些教程。 这是Perl的非常基本的知识。