匹配和打印perl文件

时间:2015-01-26 19:08:08

标签: regex perl

我有一个大文件(比如文件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,所以可以再次被归类为绝对初学者。

1 个答案:

答案 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";