Почему разделение на `|` (pipe) не работает должным образом? - PullRequest
10 голосов
/ 28 марта 2011

У меня есть строка, которую я хочу разделить.Но разделитель определяется во время выполнения, и поэтому мне нужно передать его как переменную.

Что-то вроде my @fields = split(/$delimiter/,$string); не работает.Есть мысли?


Ввод:

abcd|efgh|23

Ожидаемый результат:

abcd
efgh
23

1 Ответ

19 голосов
/ 28 марта 2011

Вы должны экранировать ваш разделитель, поскольку это специальный символ в регулярных выражениях.

Опция 1:

$delimiter = quotemeta($delimiter);
my @fields = split /$delimiter/, $string;

Опция 2:

my @fields = split /\Q$delimiter/, $string;
...