как хранить и получать объекты Perl - PullRequest
0 голосов
/ 19 февраля 2019

Проблема: я хочу, чтобы список объектов был сохранен, чтобы я мог вызывать соответствующие методы в более поздний момент времени

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 голосов
/ 19 февраля 2019

Ваш код в основном правильный - кроме нескольких синтаксических ошибок.

# 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 strict и use warnings к вашему коду помогло бы вам найти некоторые из этихпроблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...