当我解析包含数千行的复杂文件时,我遇到了问题。
我几天前已经实现了我的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 */
答案 0 :(得分:7)
您可以指定限制参数,以告诉split您最多需要多少部分:
# split /PATTERN/,EXPR,LIMIT
my ($head, $tail) = split /=/, $line, 2;
答案 1 :(得分:2)
@Thilo对于如何解决这个问题是完全正确的,但问题的根源在于您正在以导致列表项被删除的方式进行列表分配。按照您的方式进行拆分会产生以下列表:
["constant specialLine ", " <type value> /* hello ", " world */"]
当您在列表赋值中使用它时,您将获取前两个值,其余值将被丢弃。