我正在从输入文件中读取数据,如果该行中包含Date
,则需要取出整行并进行处理。在我的示例中,Mem-Id
是唯一值,我想创建一个以Mem-Id
为键的哈希。根据数据,这里是每个字段的等效值
Id -> 1
Mem-Id -> 1
Date & Time (+00:00) -> 2018-07-30T07:40:23
Priority -> LOW
Main Affected objects -> val/s1 val/s0;
Text -> Temperature exceded the limit
这是我的代码:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @data = <DATA> ;
foreach my $data_line ( @data ){
chomp $data_line;
if( $data_line =~ m/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}/){
my ($id,$mem_id,$date_time,$priority,$affected_obj,$text) = split(/\s+/,$data_line);
print "$id,$text\n";
}
}
__DATA__
.............
.............
.............
========================================================
Id Mem-Id Date & Time (+00:00) Priority Main Affected objects Text
========================================================
1 1 2018-07-30T07:40:23 LOW val/s1 val/s0; Temperature exceded the limit
========================================================
............
............
执行上述脚本时,我得到以下输出错误:
1,1,2018-07-30T07:40:23,LOW,val/s1,val/s0;
由于Main Affected objects
的值中有空格,因此将其作为单独的值并分配给$affected_obj
和$text
变量。
在用空格分割数据行时,如何为$affected_obj
和$text
分配值。
Main Affected objects = val/s1 val/s0;
Text = Temperature exceded the limit