我有一个包含多个变量的类,其中一个是散列(_runs):
sub new
{
my ($class, $name) = @_;
my $self = {
_name => $name,
...
_runs => (),
_times => [],
...
};
bless ($self, $class);
return $self;
}
Run Code Online (Sandbox Code Playgroud)
现在,我要做的就是创建一个访问器/ mutator,以及另一个将新数据推入哈希的子例程.但我有一段时间让所有引用/解除引用/ $ self调用一起工作.我用"不能使用字符串("blah")作为HASH ref等等"烧毁我的眼睛"错误.
对于访问者来说,返回哈希的"最佳实践"是什么?我应该使用以下哪个选项(如果有的话)?:
return $self->{_runs};
return %{ $self->{_runs} };
return \$self->{_runs};
Run Code Online (Sandbox Code Playgroud)
此外,当我在类中的其他子例程中使用哈希时,我使用什么语法来复制它?
my @runs = $self->{_runs};
my @runs = %{ $self->{_runs} };
my @runs = $%{ $self->{_runs} };
my @runs = $$self->{_runs};
Run Code Online (Sandbox Code Playgroud)
迭代键是一样的:
foreach my $dt (keys $self->{_runs})
foreach my $dt (keys %{ $self->{_runs} })
Run Code Online (Sandbox Code Playgroud)
那么实际添加数据呢? …
我正在尝试用perl编写一个包.我需要其中一个成员成为哈希.但是,当我引用并运行程序时,我无法使用通常的语法.如果我有:
sub new
{
my $class = shift;
my $self = {
textfile => shift,
placeholders => ()
};
bless $self, $class;
return $self;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让"占位符"成为我可以通过$ self - > {placeholders}访问的哈希?
谢谢