次のファイルがあります。
a b 5
c d 6
e f 7
g h 4
i j 3
k l 10
そして、どの行が 3 列目に最小値を示しているかを見つけて、初期ファイルから消去したいと考えています。この後、もう一度プログラムを繰り返して、どの行が最小値を示しているかをもう一度見つけて、同じことをあと 2 回行いたいと思います。
出力ファイルは
c d 6
e f 7
k l 10
次のコードを書いてみました。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
my $file1 = "try.dat";
open my $fg, "<", $file1 or die "Error during $file1 opening: $!";
my @vector;
while (<$fg>) {
push @vector, [ split ];
}
my $minimum = $vector[0][2];
my @blacklist;
for my $i (0 .. $#vector) {
if ($minimum > $vector[$i][2]){
$minimum = $vector[$i][2];
push @blacklist, @vector[$i+1];
}
}
#say "my minimum is $minimum";
#say "the blacklist is composed by @blacklist";
に含まれる要素@blacklist
(最初のケースではi j 3
) を消去する方法と、すべてを反復する方法がわかりません。
反復の助けはありますか?