在Perl中使用列表

在Perl中使用列表,perl,Perl,我有两份清单a和b,如下所示: a = ('church.n.01','church.n.02','church_service.n.01','church.n.04') b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01') 我想使用函数get_relatedness(arg1,arg2)查找a和b的成员之间的关系。如何在Perl中操作a和b,以便使用Perl中的两个嵌套for循环传递a和b之间的所有可能组合 请帮

我有两份清单a和b,如下所示:

a = ('church.n.01','church.n.02','church_service.n.01','church.n.04')  
b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01')
我想使用函数get_relatedness(arg1,arg2)查找a和b的成员之间的关系。如何在Perl中操作a和b,以便使用Perl中的两个嵌套for循环传递a和b之间的所有可能组合

请帮助我解决这个问题,因为我是Perl新手

my @a = ('church.n.01','church.n.02','church_service.n.01','church.n.04');
my @b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01');

use Data::Dumper; 
print Dumper [ get_relatedness(\@a, \@b) ];

sub get_relatedness {
  my ($c, $d) = @_;

  return map { my $t=$_; map [$t, $_], @$d } @$c;
}
输出

$VAR1 = [
      [
        'church.n.01',
        'temple.n.01'
      ],
      [
        'church.n.01',
        'temple.n.02'
      ],
      [
        'church.n.01',
        'temple.n.03'
      ],
      [
        'church.n.01',
        'synagogue.n.01'
      ],
      [
        'church.n.02',
        'temple.n.01'
      ],
      [
        'church.n.02',
        'temple.n.02'
      ],
      [
        'church.n.02',
        'temple.n.03'
      ],
      [
        'church.n.02',
        'synagogue.n.01'
      ],
      [
        'church_service.n.01',
        'temple.n.01'
      ],
      [
        'church_service.n.01',
        'temple.n.02'
      ],
      [
        'church_service.n.01',
        'temple.n.03'
      ],
      [
        'church_service.n.01',
        'synagogue.n.01'
      ],
      [
        'church.n.04',
        'temple.n.01'
      ],
      [
        'church.n.04',
        'temple.n.02'
      ],
      [
        'church.n.04',
        'temple.n.03'
      ],
      [
        'church.n.04',
        'synagogue.n.01'
      ]
    ];

要使用两个嵌套循环比较两个数组中的所有元素组合,只需循环一个,对于第一个数组的每个元素,在第二个数组的元素上执行内部循环:

my @a = ('church.n.01','church.n.02','church_service.n.01','church.n.04');
my @b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01');

my $relatedness;

for my $outer (@a) {
  for my $inner (@b) {
    $relatedness += get_relatedness($outer, $inner);
  }
}

你是如何定义关系的?@Vijay:这个问题定义“find relatedness”的意思是“调用函数get_relatedness(arg1,arg2)”。这个问题是可以回答的,不需要知道函数内部发生了什么。