【发布时间】:2013-09-24 21:38:40
【问题描述】:
我有一个文本文件 temp.txt,其中包含类似的条目,
cinterim=3534
cstart=517
cstop=622
ointerim=47
ostart=19
ostop=20
注意:键值对可以换行排列,也可以同时排列在一行中,用空格隔开。
我正在尝试使用 Perl 为相应的键打印这些值并将其存储在数据库中。但是我收到了很多错误和警告。现在我只是想打印这些值。
use strict;
use warnings;
open(FILE,"/root/temp.txt") or die "Unable to open file:$!\n";
while (my $line = <FILE>) {
# optional whitespace, KEY, optional whitespace, required ':',
# optional whitespace, VALUE, required whitespace, required '.'
$line =~ m/^\s*(\S+)\s*:\s*(.*)\s+\./;
my @pairs = split(/\s+/,$line);
my %hash = map { split(/=/, $_, 2) } @pairs;
printf "%s,%s,%s\n", $hash{cinterim}, $hash{cstart}, $hash{cstop};
}
close(FILE);
有人可以提供帮助来完善我的程序吗?
【问题讨论】:
-
您收到了哪些错误和警告。请在此处展示。
-
您的脚本不适合您的数据集 - 脚本正在拆分 ':' 上以 '.' 结尾的数据行,但您的数据对由 '=' 分隔,而不是以'.'.