Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何存储和检索perl对象_Perl - Fatal编程技术网

如何存储和检索perl对象

如何存储和检索perl对象,perl,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

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

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号,但都不起作用。有人能告诉我我在这里做错了什么。任何输入都会有很大帮助。

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

# 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
添加到代码中会帮助您发现其中一些问题。

您的代码基本上是正确的,除了一些语法错误

# 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
会帮助您发现其中一些问题。

这是您真正的代码吗?它有非常基本的错误。原则上,您确实可以将对象放入数组或散列中;它们是参考资料。然后您可以在尝试时使用它们。请澄清这是否是您的代码,如果不是,请向我们显示真实代码。
@tc=(“tc_1”,“tc_2”)
创建数组或
$tc=[“tc_1”,“tc_2”]
创建数组引用。
foreach(key%obj_list)
然后您使用(不存在)
$key
抱歉,我在这里键入了伪代码,犯了错误。我会纠正同样的错误并给出准确的代码这是你的真实代码吗?它有非常基本的错误。原则上,您确实可以将对象放入数组或散列中;它们是参考资料。然后您可以在尝试时使用它们。请澄清这是否是您的代码,如果不是,请向我们显示真实代码。
@tc=(“tc_1”,“tc_2”)
创建数组或
$tc=[“tc_1”,“tc_2”]
创建数组引用。
foreach(key%obj_list)
然后您使用(不存在)
$key
抱歉,我在这里键入了伪代码,犯了错误。我将纠正同样的错误,并在这里给出准确的代码