所以我有一個這樣的數組:打印在單行與連續元素
W,X,Y,Z
-7,6,101,15
-7,6,101,16
-7,6,101,17
-7,6,101,78
-7,6,101,79
-7,6,101,84
-7,6,101,92
-7,9,615,49
-7,9,615,50
-7,10,759,38
-7,10,759,39
現在,我想打印時,W = X = Y和Z是連續的數字線。
預期輸出:
W,X,Y,Z
-7,6,101,15-16-17
-7,6,101,78-79
-7,6,101,84
-7,6,101,92
-7,9,615,49-50
-7,10,759,38-39
如何實現這個Perl的?
感謝, 藝術
這裏是我的腳本:
while ($output_line = <FILE_C>) {
chomp $output_line;
my ($W, $X, $Y, $C, $D, $E, $F, $Z) = (split /\s/, $output_line);
if ($Y == $Block_previous) {
print("Yes\t$Block_previous\t$Y\t$Z\n");
push(@Z_array, $Z);
push(@Y_array, $Y);
next;
}
else {
push(@Z_array_nonblkmatch, $Z);
}
foreach $Z_printer (@Z_array) {
print("$Y_array[0]\t$Z_printer\n");
if (($Z_delta == 1) || ($Z_delta == -1)) {
push(@Z_adj, $Z_printer, $Z_printer_prev);
#~ print ("pair: $Z_printer_prev-$Z_printer\n");
}
else {
#~ print ("$Z_printer\n");
}
$Z_printer_prev = $Z_printer;
}
@Z_adj =();
@Z_array =();
@Y_array =();
@Z_array_nonblkmatch =();
$Block_previous = $Y;
#~ <STDIN>;
}
close(FILE_C);
謝謝,raina77ow!然而,這是輸出的樣子: -7,6,101,15-16-17-79
-7,6,101,16-17-79
-7,6,101,17-79
-7,6,101,78-79
-7,6,101,79-50
-7,6,101,84-50
-7,6,101,92
-7,6,615,49-50-39
-7,6,615,50
我基本上是從文件中調用這些元素,並在Z等於先前的值時使用push。但這是我得到的。 -7,6,101,15-16-17 -7,6,101,16-17 -7,6,101,17 -7,6,101,78-79 – AREYES 2013-04-30 19:51:41
向我們顯示您的數據結構,其中W,X,Y,Z是存儲 – 2013-04-30 19:51:56