私はperlを初めて使用し、タブ区切りファイル内の行を解析し、解析された行の値を特定の値と比較してから行を出力する方法を理解しようとしています。
例: すべての数字が 3 より大きいすべての行を印刷したいとします。
2.4 6.9 3.1
B 10.2 3.4 7.6
C 1.9 2.6 2.3
アウトプットしたい
B 10.2 3.4 7.6
B はすべての数値が 3 より大きい唯一の行であるため
前もって感謝します
Text::CSV CPAN モジュールを使用して、タブ区切りファイルを配列の配列に解析します
すべてのレコードをループします。レコードごとに
フィールド 1、2、および 3 がしきい値よりも大きいかどうかを確認します。たった 3 つのフィールドの場合は単純な「if」を使用し、多数のフィールドの場合は単純な「if」を使用しますgrep
すべてのフィールドが大きい場合は、レコードを STDOUT に出力します
使用できますsplit
: http://perldoc.perl.org/functions/split.html
ファイルから に行を読み取ったと仮定すると$inString
、次を使用します。
($letter, $n1, $n2, $n3) = split('\t', $inString);
(パターンの '\t' はタブ文字です。)
次に、$n1、$n2、および $n3 がすべて 3 より大きいかどうかを確認し、3 より大きい場合は を出力します$inString
。
これは、各行に一定数の値があることも前提としています (この例では 3 つ)。これが常に当てはまるとは限らない場合は、戻り値をsplit
配列に入れて、最初の要素を除くすべての要素をチェックできます。