【发布时间】:2012-05-23 18:07:28
【问题描述】:
我声明了以下子项(实际上,值来自数据库 - 所以我对其进行了简化):
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 ref 而使用“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});
}
【问题讨论】:
标签: perl