Почему split на `` `(pipe) работает не так, как ожидалось?
У меня есть строка, которую я хочу разбить. Но разделитель определяется во время выполнения, поэтому мне нужно передать его как переменную.
Нечто вроде my @fields = split(/$delimiter/,$string);
не работает. Любые мысли?
Вход:
abcd|efgh|23
Ожидаемый результат:
abcd
efgh
23
Ответы
Ответ 1
Вам нужно избегать разделителя, поскольку он является специальным символом в регулярных выражениях.
Вариант 1:
$delimiter = quotemeta($delimiter);
my @fields = split /$delimiter/, $string;
Вариант 2:
my @fields = split /\Q$delimiter/, $string;