-1

私はperlを初めて使用し、タブ区切りファイル内の行を解析し、解析された行の値を特定の値と比較してから行を出力する方法を理解しようとしています。

例: すべての数字が 3 より大きいすべての行を印刷したい。

5.4 6.9 3.1

B 10.2 3.4 7.6

C 1.9 2.6 2.3

アウトプットしたい

5.4 6.9 3.1

B 10.2 3.4 7.6

前もって感謝します

編集:申し訳ありませんが、私の説明は明確ではなく、テストケースは良くありませんでした. すべての数字が 3 より大きい行を見つけたいと思います。

例: 行 A の 5.4 を 2.4 に変更した場合、3 未満の数値が含まれているため、コードでこの行を出力したくありません。

4

1 に答える 1

1

以下のプログラムがこれを行います。DATAデータをプログラム自体に組み込むことができるように、ファイルハンドルから読み取ることによって機能します。他の場所からデータを読み取るにはopen、ソースにアクセスして、代わりにそのファイルハンドルから読み取る必要があります。

各行はシステム変数に読み込まれ、デフォルトで空白で$_分割されるフィールドに分割されます。フィールドは配列に入れられます。split$_@data

このgrep関数は、指定されたテストに合格したリストの要素の数を返します。スライス@data[1..$#data]@data、最初の要素を除くすべての配列です (配列インデックスはゼロから始まるため)。

3 を超える要素の数が 0 以外の場合、呼び出しはprint表示されます。$_

use strict;
use warnings;

while (<DATA>) {
  my @data = split;
  print if grep $_ > 3, @data[1..$#data];
}

__DATA__
A 5.4 6.9 3.1

B 10.2 3.4 7.6

C 1.9 2.6 2.3

出力

A 5.4 6.9 3.1
B 10.2 3.4 7.6
于 2012-06-05T15:31:09.833 に答える