Ich möchte die pack()-Funktion in Perl verwenden, um einige Daten zu kodieren. Dann möchte ich meine gepackte Struktur mit einer anderen gepackten Struktur vergleichen. Ich möchte, dass dieser Vergleich mit den Byte-Werten dieser gepackten Struktur erfolgt.Wie kann ich gepackte Werte in Perl vergleichen?
Gemäß der Dokumentation verwendet cmp das aktuelle Gebietsschema, um zu ermitteln, wie Zeichenfolgen verglichen werden. Aber ich möchte keine Intelligenz für den Vergleich verwenden. Ich möchte was auch immer einem Memcmp() am nächsten ist. Natürlich kann ich <=>
nicht zum Vergleichen meiner gepackten Objekte verwenden, da sie keine Zahlen sind.
Was ist der beste Weg, gepackte Strings in Perl zu vergleichen?
Hinweis: Ich habe gelesen this article on efficient sorting in Perl, die feststellt, dass die einfache Sortierfunktion einen Memcmp-ähnlichen Algorithmus zum Vergleichen von Strukturen verwendet. Ich frage mich, wie man einen solchen Vergleich ohne Sortierung erreichen kann.
'sort' ist wirklich ein ausgezeichneter Ort zu starten aus. Der Versuch, einen eigenen Sort-Ersatz zu bauen, wird wahrscheinlich nicht so gut funktionieren, wie Sie es sich wünschen, da die Perl-Sortierung über Jahre optimiert wurde. Die effiziente Sortierverknüpfung, die Sie angegeben haben, enthält sogar Anweisungen zur Verwendung von gepackten Datenstrukturen, um die Sortierung zu beschleunigen. Das ist ziemlich clever, aber die Sortierung müsste lange dauern, bevor ich mich der Pflege widmen würde. – sarnold
Möchten Sie einen Vergleich (d. H. Weniger als, größer oder gleich) oder einen Ja-oder-Nein-Gleichheitstest? –
@gbacon: Ich möchte etwas, das ich bestellen kann, also weniger als, größer als, gleich. –