【发布时间】:2015-12-25 07:25:15
【问题描述】:
我正在尝试理解高阶 Perl 的平面文件数据库。
在 FlatDB 包中,sub new,在第 141 页,他有这样的声明:
祝福 { FH => $fh, FIELDS => \@field, FIELDNUM => \%fieldnum, FIELDSEP => $FIELDSEP } => $class;
其中 $class== FlatDB。
这些没有符号的变量(FH、FIELDNUM 等)是什么?如何打印它们的值、查找它们的类型或使用它们?
FlatDB 似乎是某种哈希值,但我所有打印值的尝试都会导致错误,例如:
printhash(\%fieldnum,"at37:\\%fieldnum=");
# prints the hash properly, BUT
printhash(FlatDB{FIELDNUM),"at38:FlatDB{FIELDNUM}=");
printhash(FlatDB->FIELDNUM,"at39:FlatDB->FIELDNUM=");
# print the error:
# Can't locate object method "FIELDNUM" via package "FlatDB"
当 FIELDNUM 被定义为哈希时,为什么它认为它是一个方法?
仅供参考:printhash 子是:
sub printhash
{ my $href=shift; # a REFERENCE to a hash
my $msg=shift; # a text message
my %h = %{$href};
my $len = keys %h;;
print "\n$msg, length=$len";
foreach my $k ( keys %h )
{ print "\nkey: $k, value: $h{$k}"; }
print "\n";
}
【问题讨论】: