Мой код раньше работал нормально, а теперь он ломается. Проблема заключается в следующем: я хочу разделить исходную строку (из базы данных, но это не важно) на разделитель. Разделитель не является фиксированным, но предоставляется пользователем в виде строки. Раньше я делал это:
@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
в примере с одиночной кавычкой специально, я думаю, понятно почему).