-3

我对 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 的行

提前致谢

4

2 回答 2

3
  • 使用 Text::CSV CPAN 模块将制表符分隔的文件解析为数组数组

  • 循环遍历所有记录。对于每条记录

    • 检查字段 1、2 和 3 是否大于您的阈值。对于只有 3 个字段,使用简单的“if”,对于大量字段,使用grep

    • 如果所有字段都较大,则将记录打印到 STDOUT

于 2012-06-05T16:42:33.723 回答
1

您可以使用split: http: //perldoc.perl.org/functions/split.html

假设您已将文件中的一行读入$inString,您将使用:

($letter, $n1, $n2, $n3) = split('\t', $inString);

(模式的 '\t' 是制表符。)

然后检查 $n1、$n2 和 $n3 是否都大于 3,如果是,则打印$inString

这还假设您在每行上都有恒定数量的值(在您的示例中为三个)。如果情况并非总是如此,您可以将返回值 fromsplit放入一个数组并检查除第一个之外的所有元素。

于 2012-06-05T16:50:48.203 回答