2012-04-11 2 views
2

Глядя на perltidy Я не вижу такой опции. Есть ли какой-нибудь инструмент, который делает это?Как сортировать записи хэша ключами при форматировании исходного кода Perl?

+2

Я бы нервничал из-за любого инструмента, который пытался это сделать. Поскольку значения могут быть результатом сложных операций, ему нужно будет понимать источник Perl на гораздо более низком уровне, чем могут обрабатывать перлити и другие синтаксические маркеры. –

+0

Если вы ссылаетесь на то, что сами ключи могут быть результатом сложных операций, это не мой случай. Мы можем предположить, что все ключи являются строковыми константами. –

ответ

3

Я предпочитаю сортировать свои ключи «логически». Поля, такие как «имя» и «id», на первом месте, иногда что-то вроде «длинное имя» или «описание» после имени.

Если вам нужно сделать что-то вроде этого, вы можете использовать редактор с объектом оболочки для

  1. передать данные в перл программу
  2. Eval выбора
  3. использование Data::Dumper и установить $Data::Dumper::Sortkeys = 1;
  4. А потом сделать Data::Dumper->Dump([ $eval_hash ], [ '$VAR1' ])
  5. сдирать передней части s/\A[^=]+=\s+//
  6. Заменить выбор на выход
+0

В этом случае нет специальной логики. Эти хэши более или менее отражают файлы XML-схемы, поэтому ключи соответствуют именам тегов. –

+0

Существует проблема с этим подходом. Некоторые значения в хэш-функции - это вызовы функций, поэтому после оценки хеша мы получаем результаты вызова этих функций, и исходный источник теряется. –

Смежные вопросы