如何限制Perl拆分中返回的项目数?

时间:2010-10-20 01:35:26

标签: perl parsing split

当我解析包含数千行的复杂文件时,我遇到了问题。

我几天前已经实现了我的Perl脚本。

 my ($head, $tail) = split /=/, $line;

我的几乎所有源文件$line样式如下:

constant normalLines = <type value>     /*  hello world  */

我可以获得输出$tail = /* hello world */

今天我在解析这样的行时发现了一个错误(行中有两个=

constant specialLine = <type value>     /*  hello = world  */

但现在输出为$tail = /* hello

如何在上面的代码中使用split()修复我的错误?我仍然想要输出$tail = /* hello = world */

2 个答案:

答案 0 :(得分:7)

您可以指定限制参数,以告诉split您最多需要多少部分:

# split /PATTERN/,EXPR,LIMIT

my ($head, $tail) = split /=/, $line, 2;

答案 1 :(得分:2)

@Thilo对于如何解决这个问题是完全正确的,但问题的根源在于您正在以导致列表项被删除的方式进行列表分配。按照您的方式进行拆分会产生以下列表:

  ["constant specialLine ", " <type value>     /*  hello ", " world  */"]

当您在列表赋值中使用它时,您将获取前两个值,其余值将被丢弃。