相关疑难解决方法(0)

如何与具有哈希属性的Perl对象进行交互?

我有一个包含多个变量的类,其中一个是散列(_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 hash object

4
推荐指数
2
解决办法
1万
查看次数

如何在Perl中使类的成员成为哈希?

我正在尝试用perl编写一个包.我需要其中一个成员成为哈希.但是,当我引用并运行程序时,我无法使用通常的语法.如果我有:

sub new
{
my $class = shift;
my $self = {
    textfile => shift,
    placeholders => ()
};
bless $self, $class;
return $self;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让"占位符"成为我可以通过$ self - > {placeholders}访问的哈希?

谢谢

perl hash class object

4
推荐指数
2
解决办法
2728
查看次数

标签 统计

hash ×2

object ×2

perl ×2

class ×1