如何在perl中创建对象的哈希

时间:2010-08-31 23:08:08

标签: perl class hash object

我希望能够将对象存储在哈希结构中,这样我就可以将对象的名称作为变量来处理。 有人可以帮我做一个 sub new { ... } 创建一个新对象作为哈希成员的例程?我不确定如何执行此操作或如何在像这样存储时引用和/或使用对象。我只是想能够使用并引用其他子程序的对象名称。

请参阅How can I get name of an object in Perl?中的评论,了解我为何要这样做。

谢谢

2 个答案:

答案 0 :(得分:5)

对象实际上没有名字。你为什么试图给他们起名字?其中一个基本要点是你不需要知道一个名字,甚至不需要知道它是什么类。

可能有更好的方法来完成你的任务。

但是,由于对象只是引用,引用只是标量,因此对象可以是哈希值:

my %hash = (
    some_name => Class->new( ... ),
    other_name => Class->new( ... ).
    );

您可能需要查看一本书,例如 Intermediate Perl ,以了解参考和对象的工作原理。

答案 1 :(得分:2)

不太明白你想要做什么。也许你可以提供一些具体的例子?

您可以将对象存储为哈希,就像perl中的任何其他变量一样。

my %hash = ( );
$hash{'foo'} = new Foo(...);
$hash{'bar'} = new Bar(...);

假设您知道存储在'foo'的对象是Foo对象,而'bar'是Bar对象,那么您可以从散列中检索对象并使用它。

$hash{'foo'}->foo_method();
$hash{'bar'}->bar_method();

您可能希望以编程方式在运行时确定此行为。这是假设你坚持这个命名方案。