2014-06-24 122 views
-3

請教如何在關係數組中傳遞3個變量。perl將變量賦值給一個有關係的數組

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

我想在@array中指定值,這樣如果我查找任何實例,我應該得到所有a,b,c的值。

是否有除了逗號任何方式分配在陣列中的值。像$答:$ B:$ C或$ A> $ B> $ C 我需要這個,因爲我想用grep 1條記錄(一)和get(A:B:C)

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

expected output should be a:b:c 

謝謝,

+1

你的意思是期望輸出應該是「A:b:C」?執行'grep'並將其返回值賦給'@ array'將不會輸出任何內容。 – Kaoru

+0

其實我正在向數組推送3個不同的變量。 和我想要的任何一個匹配我想要從陣列中刪除所有3。 例如,如果有: ABC 高清 中興 FGI ADF 我要刪除ABC以及ADF因爲我grepping爲 – user3717017

回答

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操盤的正則表達式...

+0

感謝您的答覆皮埃爾..Now如果我在@array用grep什麼輸出我會得到,因爲我期待abc – user3717017

+0

感謝您的及時響應.. – user3717017