我有一些要在 Perl 中解析的数据,并且在不久的将来会添加越来越多不同格式的数据。我想做的是编写一个易于使用的函数,我可以将字符串和正则表达式传递给它,它会返回括号中的任何内容。它会像这样工作(伪代码):
sub parse {
$data = shift;
$regex = shift;
$data =~ eval ("m/$regex/")
foreach $x ($1...$n)
{
push (@ra, $x);
}
return \@ra;
}
然后,我可以这样称呼它:
@subs = parse ($data, '^"([0-9]+)",([^:]*):(\W+):([A-Z]{3}[0-9]{5}),ID=([0-9]+)');
如您所见,此代码存在一些问题。我不知道 eval 是否有效,'foreach' 肯定无效,而且不知道有多少括号,我不知道循环多少次。
这对于拆分来说太复杂了,所以如果我忽略了另一个功能或可能性,请告诉我。
谢谢你的帮助!