我声明了以下子项(实际上,这些值来自数据库 - 所以我简化了它):
sub get_date {
my ($ref_last)=@_;
$$ref_last->{duration}='24,0,4';
($$ref_last->{duration}->{d},
$$ref_last->{duration}->{h},
$$ref_last->{duration}->{m})
= split(/\,/, $$ref_last->{duration});
}
这个 sub 是从脚本的 main-Part 调用的,如下所示:
my $hashy;
get_date(\$hashy);
print $hashy->{duration}->{d};
一切都很好,并且像魅力一样工作,直到我使用严格:
use strict;
my $hashy;
get_date(\$hashy);
print $hashy->{duration}->{d};
在这种情况下,perl 说“不能使用字符串 ("24,0,4") 作为 HASH 引用,而 "strict refs" 正在使用"
我已经尝试过了ref($ref_last)
——但ref
它是一个只读函数。
任何建议,为什么会发生这种情况-也许是更好的解决方案?
这是完整的(非)工作脚本:
#!/usr/bin/perl -w
use strict;
my $hashy;
get_date(\$hashy);
print $hashy->{duration}->{d};
sub get_date {
my ($ref_last)=@_;
$$ref_last->{duration}='24,0,4';
($$ref_last->{duration}->{d},
$$ref_last->{duration}->{h},
$$ref_last->{duration}->{m})
= split(/\,/, $$ref_last->{duration});
}