Глядя на perltidy Я не вижу такой опции. Есть ли какой-нибудь инструмент, который делает это?Как сортировать записи хэша ключами при форматировании исходного кода Perl?
ответ
Я предпочитаю сортировать свои ключи «логически». Поля, такие как «имя» и «id», на первом месте, иногда что-то вроде «длинное имя» или «описание» после имени.
Если вам нужно сделать что-то вроде этого, вы можете использовать редактор с объектом оболочки для
- передать данные в перл программу
- Eval выбора
- использование
Data::Dumper
и установить$Data::Dumper::Sortkeys = 1;
- А потом сделать
Data::Dumper->Dump([ $eval_hash ], [ '$VAR1' ])
- сдирать передней части
s/\A[^=]+=\s+//
- Заменить выбор на выход
В этом случае нет специальной логики. Эти хэши более или менее отражают файлы XML-схемы, поэтому ключи соответствуют именам тегов. –
Существует проблема с этим подходом. Некоторые значения в хэш-функции - это вызовы функций, поэтому после оценки хеша мы получаем результаты вызова этих функций, и исходный источник теряется. –
Я бы нервничал из-за любого инструмента, который пытался это сделать. Поскольку значения могут быть результатом сложных операций, ему нужно будет понимать источник Perl на гораздо более низком уровне, чем могут обрабатывать перлити и другие синтаксические маркеры. –
Если вы ссылаетесь на то, что сами ключи могут быть результатом сложных операций, это не мой случай. Мы можем предположить, что все ключи являются строковыми константами. –