Я хочу использовать функцию Perl pack() для кодирования некоторых данных. Затем я хочу сравнить свою упакованную структуру с другой упакованной структурой. Я хочу, чтобы это сравнение было по байтовым значениям этой упакованной структуры.
Согласно документации, cmp использует текущую локаль для определения способа сравнения строк. Но я не хочу, чтобы к сравнению применялся какой-либо интеллект. Я хочу все, что ближе всего к memcmp(). Очевидно, я не могу использовать <=> для сравнения упакованных объектов, поскольку они не являются числами.
Как лучше всего сравнивать упакованные строки в Perl?
Примечание: я читал эту статью об эффективной сортировке в Perl, в которой отмечается, что простая Функция sort использует алгоритм, подобный memcmp, для сравнения структур. Мне интересно, как добиться такого сравнения без использования сортировки.
sortдействительно отличное место для начала. Попытка создать собственную сортировку-замену, вероятно, не сработает так хорошо, как хотелось бы, поскольку сортировка в Perl годами доводилась до совершенства. Ссылка на эффективную сортировку, которую вы дали, на самом деле включает инструкции о том, как использовать упакованные структуры данных для ускорения сортировки, что довольно умно, но сортировка должна занять много времени, прежде чем я посвятю себя ее поддержке. - person sarnold   schedule 20.07.2010