在perl中,如何循环文件,解析行,然后比较行中的值?

在perl中,如何循环文件,解析行,然后比较行中的值?,perl,parsing,Perl,Parsing,我对perl非常陌生,试图弄清楚如何解析以制表符分隔的文件中的行,并将解析行中的值与某个值进行比较,然后打印该行 例如: 我想打印出所有数字都大于3的行 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 提前谢谢 编辑:对不起,我的解释不清楚,测试用例也不好。我希望找到所有数字都大于3的行 例如:如果我将A行的5.4更改为2.4,我不希望代码打印这一行,因为它包含的数字小于3。下面的程序将

我对perl非常陌生,试图弄清楚如何解析以制表符分隔的文件中的行,并将解析行中的值与某个值进行比较,然后打印该行

例如: 我想打印出所有数字都大于3的行

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

提前谢谢

编辑:对不起,我的解释不清楚,测试用例也不好。我希望找到所有数字都大于3的行


例如:如果我将A行的5.4更改为2.4,我不希望代码打印这一行,因为它包含的数字小于3。

下面的程序将为您执行此操作。它通过读取
数据
文件句柄来工作,以便将数据合并到程序本身中。要从其他地方读取数据,您必须
打开
源文件并从该文件句柄读取

每一行都被读入系统变量
$\uu
中,并使用
split
将其划分为字段,默认情况下,该字段在空白处拆分
$\u
。这些字段被放入数组
@data

grep
函数返回通过给定测试的列表元素数。切片
@data[1..$#data]
是除第一个元素之外的所有
@data
数组(因为数组索引从零开始)

如果大于3的元素计数为非零,则对
print
的调用将打印
$\ucode>

使用严格;
使用警告;
而(){
my@data=split;
如果grep$#>3,@data[1..$#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

一行风格:
$perl-F-lane'如果grep{$\u>3}@F[1..$\F]'文件打印
如果我的一行包含大于3的数字和小于3的数字,代码似乎不起作用。例如,如果我将A行更改为“A 2.4 6.9 3.1”,我不希望打印这一行,因为它的值小于3。你会怎么做?谢谢