Программисту достался еще один текстовый табличный файл (про первый была отдельная история).
(таблицу можно скачать)
Потребовалось удалить первую колонку из таблицы.
Программист решил воспользоваться
функциями split
, shift
и join
:
разбить каждую строчку в массив полей, удалить первое из них, опять соединить оставшиеся поля в строку.
Получился такой однострочник:
Однако результат его работы оказался совсем не таким, как ожидал программист…
В файле result.txt
оказалась всего одна строчка.
Правда, эта строчка – очень длинная.
Дело в том, что split
обрабатывает
" "
(строчку из одного пробела) в качестве первого параметра особым образом:
в качестве разделителя рассматривается не одиночные пробелы, а последовательности
“пробельных символов”
(эквивалент регулярного выражения /\s+/
).
Перевод строки тоже является пробельным символом,
так что после @a = split " ";
последняя
строка в @a
не содержит перевода строки в конце.
Возможное решение –
использовать в качестве разделителя / /
:
Или добавить опцию -l
,
чтобы при печати каждой строки в ее конец добавлялся
бы перевод строки:
Мы получили неожиданно много ответов от читателей, и самое полное и точное объяснение прислал Тигран tigran@