-3

请建议如何在具有关系的数组中传递 3 个变量。

@item = ($a , $b , $c);
@record = push(@array, @item);

我想在@array 中赋值,这样如果我寻找任何实例,我应该得到所有 a、b、c 的值。

除了逗号之外还有什么方法可以在数组中分配一个值。像 $a:$b:$c 或 $a>$b>$c 我需要这个,因为我想 grep 1 record(a) 并获取 (a:b:c)

@array1 = grep(!/$a/, @array);

expected output should be a:b:c 

谢谢,

4

1 回答 1

1

问题不是很清楚。也许你应该改写它。但是,我知道您想要一个包含三个元素组的数组。

您可能想要使用数组引用。

@item = ($a , $b , $c);
push(@array, \@item);

或者

$item = [$a , $b , $c];
push(@array, $item);

此外,push不会像您期望的那样返回数组。Perldoc 说:

返回完成的“推送”之后数组中的元素数。

现在,如果您想过滤这些由三个元素组成的组,您可以执行以下操作:

my @output = ();
L1: foreach ( @array ){
    L2: foreach( @$_ ){
        next L1 if $_ eq $a; 
    }
    push @output, $_;
}

请注意,如果您想要完全匹配,您应该使用eq运算符而不是正则表达式...

于 2014-06-24T09:08:01.823 回答