- 1
@items = keys %{{ map { $_ => 1} @items }};
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−121
@items = keys %{{ map { $_ => 1} @items }};
Удаление повторов из массива.
Вроде и не ГК, но, блин, такие вырвиглазные конструкции меня порой убивают... Мои глаза...
http://www.perl.com/pub/a/2000/10/begperl1.html
читать код на порядок сложнее чем писать. когда пишешь, знаешь что/зачем делаеться. когда читаешь, нужно буквально в голове постоянно гадать что думал программист когда писал это.
если бы код было легко читать, тогда все бы делали рутинно код ревью. и качество софта в среднем было бы на порядок выше того что мы имеем сейчас.
написанное однажды - не читается никогда
Например, вот такое: http://www.de.ioccc.org/2000/bmeyer.c
Второй - это бытность частью production системы
Говнокод однозначно.
Надо было делать splice внутри кода map а то убивается порядок элементов массива
Первая пара создает из хэша ссылку. Если перед ними добавить еще и % perl решит, что возвращаемое значение уже является ссылкой и вы просто пытаетесь его разыменовать. Вообще "%{ }" - оператор разыменования. Просто % сработает только для явного указания скаляра - %$hash_ref.
Хотя для улучшения читабельности можно использовать функцию uniq из модуля List::MoreUtils или что-то подобное.
В таком случае порядок элементов сохраняется.