Tôi muốn sử dụng chức năng pack() trong Perl để mã hóa một số dữ liệu. Sau đó, tôi muốn so sánh cấu trúc đóng gói của tôi với một cấu trúc đóng gói khác. Tôi muốn so sánh này là trên các giá trị byte của cấu trúc được đóng gói này.Làm cách nào để so sánh các giá trị được đóng gói trong Perl?
Theo tài liệu, cmp sử dụng ngôn ngữ hiện tại để xác định cách so sánh chuỗi. Nhưng tôi không muốn bất kỳ thông minh nào được áp dụng cho so sánh. Tôi muốn bất cứ điều gì là gần nhất với một memcmp(). Rõ ràng tôi không thể sử dụng <=>
để so sánh các đối tượng đóng gói của tôi vì chúng không phải là số.
Cách tốt nhất để so sánh chuỗi được đóng gói trong Perl là gì?
Sidenote: Tôi đã đọc this article on efficient sorting in Perl lưu ý rằng hàm sắp xếp đơn giản sử dụng thuật toán giống như memcmp để so sánh cấu trúc. Tôi tự hỏi làm thế nào để đạt được một so sánh như vậy mà không cần phải sử dụng sắp xếp.
'sort' thực sự là một nơi tuyệt vời để bắt đầu từ đâu. Việc cố gắng xây dựng bộ phận thay thế sắp xếp của riêng bạn có thể sẽ không hoạt động tốt như bạn muốn, vì loại Perl đã được tinh chỉnh trong nhiều năm. Liên kết phân loại hiệu quả mà bạn đưa ra thực sự bao gồm các hướng dẫn về cách sử dụng cấu trúc dữ liệu đóng gói để tăng tốc độ sắp xếp, khá thông minh, nhưng việc phân loại sẽ phải mất một thời gian dài trước khi tôi cống hiến bản thân để duy trì điều đó. – sarnold
Bạn có muốn so sánh (tức là, nhỏ hơn, lớn hơn hoặc bằng) hoặc kiểm tra bình đẳng có hoặc không? –
@gbacon: Tôi muốn thứ gì đó tôi có thể đặt hàng, ít hơn, lớn hơn, bằng. –