【发布时间】:2009-07-30 13:02:36
【问题描述】:
我的代码过去可以正常工作,但现在它坏了。问题的减少如下:我想在分隔符处拆分源字符串(来自数据库,但这并不重要)。分隔符不是固定的,而是用户在字符串中提供的。我曾经这样做过:
@results = split($splitString, $sourceStr);
但是当用户要求用加号 (+) 作为分隔符时,这会中断。消息有点神秘:
Quantifier follows nothing in regex; marked by <-- HERE in m/+ <-- HERE
我的理解是它会中断,因为 split 不需要字符串,而是正则表达式。但是,我无法设法找到一种以有效的方式逃避 $splitString 的方法。这是我的玩具示例:
my $s = 'string 1 + $splitChar + string 2';
my $splitChar = "+";
my @result = split(/\\$splitChar/, $s);
print "num of results ".scalar(@result)."\n";
foreach my $value (@result) {
print "$value\n";
}
但它根本没有分裂。我尝试了许多变体,但都没有奏效。请注意,用户指定的分隔符可能仅限于一个字符,但多字符解决方案会更好。
(是的,我可以编写自己的专用拆分函数,但这不是重点)。
(单引号字符串示例中的$splitChar 是故意的,我想原因很清楚)。
【问题讨论】: