我正在编写一个Perl脚本来运行并获取各种数据元素,例如:
1253592000
1253678400 86400 6183.000000
1253764800 86400 4486.000000
1253851200 36.000000 86400 10669.000000
1253937600 0.000000 86400 9126.000000
1254024000 0.000000 86400 2930.000000
1254110400 0.000000 86400 2895.000000
1254196800 0.000000 8828.000000
Run Code Online (Sandbox Code Playgroud)
我可以抓住这个文本文件的每一行没问题.
我正在使用正则表达式来抓取每个字段.一旦我在变量中有一行,即$ line - 我怎样才能抓住每个字段并将它们放入自己的变量中,即使它们有不同的分隔符?
FMc*_*FMc 13
此示例说明如何使用空格作为分隔符(拆分)或使用固定列布局(解包)来解析行.随着unpack如果你使用大写(A10等),空格会为您删除.注意:正如brian d foy指出的那样,该split方法对于缺少字段的情况(例如,第二行数据)不能很好地工作,因为字段位置信息将丢失; unpack除非我们误解你的数据,否则就是去的地方.
use strict;
use warnings;
while (my $line = <DATA>){
chomp $line;
my @fields_whitespace = split m'\s+', $line;
my @fields_fixed = unpack('a10 a10 a12 a28', $line);
}
__DATA__
1253592000
1253678400 86400 6183.000000
1253764800 86400 4486.000000
1253851200 36.000000 86400 10669.000000
1253937600 0.000000 86400 9126.000000
1254024000 0.000000 86400 2930.000000
1254110400 0.000000 86400 2895.000000
1254196800 0.000000 8828.000000
Run Code Online (Sandbox Code Playgroud)