Сегодня я наткнулся на эту конструкцию Perl:
@foo = split("\n", $bar);
Это хорошо работает для разделения большой строки на массив строк для окончаний строк типа UNIX, но оставляет завершающий \ r для Windows. Поэтому я изменил его на:
@foo = split("\r?\n", $bar);
Что разбивает строку по строкам и не оставляет замыкающего \ r (проверено в ActivePerl 5.8). Затем мне было указано, что это, вероятно, должно быть:
@foo = split(/\r?\n/, $bar);
Так почему же второй вариант вообще работает? Двойные кавычки означают, что содержимое оценивается, поэтому \ r и \ n фактически обрабатываются как CR и LF, но? рассматривается как метасимвол регулярного выражения, а не как буквальный знак вопроса.
Являются ли косые черты вокруг регулярного выражения необязательными для split ()? Предполагается, что первым параметром функции будет регулярное выражение?