我有一个大文件(比如文件A),我想在perl中从中提取某些数据行。
一个示例条目我可以如下..它总是10个数据点,条目是5-6个字母数字字符长,最后是:一行可以有多个条目,但\W+
覆盖其间的空格。
....
....
LookupReferences: {
12V0E:
24983:
384KJ:
48743X:
52V0E:
64983:
784KJ:
88743X:
94983:
1084KJ:
}
我希望它看起来像我可以加载到其他地方的以下条目。
References,12V0E,24983,384KJ,48743X,52V0E,64983,784KJ,88743X,94983,1084KJ
我正在阅读有关将整个页面强制转换为数组的地方,但是这里的任何帮助都非常受欢迎,因为我一直在搞乱它并且在10年内没有真正使用任何perl,所以可以再次被归类为绝对初学者。
答案 0 :(得分:1)
我非常喜欢这项工作的范围运营商。
E.g。
while ( <$file_handle> ) {
if ( m/LookupReferences/ .. /\}/ ) {
print;
}
}
(而不是print
您可能想要处理和连接或以其他方式推入数组)。
我不太热衷于将整个文件强制转换为数组,因为当你查看较大的文件时它不是很有效。
但如果你想这样做,那就简单了:
my @file = <$filehandle>;
继续评论:当您尝试重新格式化时,您可以执行以下操作:
my @references;
while ( <$file_handle> ) {
if ( m/LookupReferences/ .. /\}/ ) {
my ( $value ) = ( m/\s*(\w+):/ );
if ( defined $value ) { push ( @references, $value ) };
}
}
print join ( ",", "References", @references ),"\n";