在过去我有不同的开始和结束时,我已经能够使用触发器来提取文本。这次我在尝试提取文本时遇到了很多麻烦,因为我的源文件中没有不同的分隔符,因为触发器的 START 和 END 是相同的。我希望触发器在年份为 yyyy 的线存在时开始正确并继续推$_
送到一个数组,直到另一条线开始 yyyy。触发器的问题是它会在我的下一次开始时是错误的。
while (<SOURCEFILE>) {
print if (/^2017/ ... /^2017/)
}
对给定的源数据使用上述内容将错过我也需要匹配的文件的第二个多行部分。也许我认为是解析多行文件的最佳方法的触发器在这种情况下不起作用?我想要做的是开始匹配以日期开头的第一行并继续匹配,直到下一行之前的行以日期开头。
样本数据是:
2017 message 1
Text
Text
Text
2017 message 2
more text
more text
more text
2017 message 3
yet more text
yet more text
yet more text
但我得到:
2017 message 1
Text
Text
Text
2017 message 2
2017 message 3
yet more text
yet more text
yet more text
...缺少消息 2 内容..
我不能依赖源数据中的空格或不同的 END 分隔符。我想要的是打印每条消息(实际上push @myarray, $_
然后测试匹配),但是在这里我缺少消息 2 下面的行,因为触发器设置为 false。有什么方法可以用触发器来处理这个问题,还是我需要使用其他东西?提前感谢任何可以提供帮助/建议的人。