如何存储和检索perl对象

时间:2019-02-19 17:24:08

标签: perl

问题:我想存储一个对象列表,以便以后可以调用相应的方法

my @tc = ("TC_1","TC_2");
my %obj_list = ();
foreach my $test (@tc) {
     $obj_list{$test} = Test->new($test);
 }

在后面的同一模块文件中,我需要调用这些对象的相应方法

foreach my $test (keys %obj_list) {
         if (some specific condition is satisfied for a test) {
         1 --> $obj_list->$test->action();
         2 --> $obj_list{$test}->action(); 
      }
 }

我尝试了1和2,但它们却无法正常工作。有人可以告诉我在这里我会做错什么。任何输入都会有很大帮助。

1 个答案:

答案 0 :(得分:3)

您的代码基本上是正确的-除了一些语法错误之外。

# Use ( ... ) to initialise an array.
my @tc = ("TC_1","TC_2");
my %obj_list = ();
foreach my $test (@tc) {
  $obj_list{$test} = Test->new($test);
}

foreach (keys %obj_list) {
  if (some specific condition is satisfied for a test) {
    # This version is incorrect
    # $obj_list->$key->action();

    # This version will work, except you have the
    # key in $_, not $key.
    $obj_list{$_}->action(); 
  }
}

在代码中添加use strictuse warnings可以帮助您发现其中的一些问题。