如何比较Perl中的打包值?

前端之家收集整理的这篇文章主要介绍了如何比较Perl中的打包值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在Perl中使用 pack()函数来编码一些数据.然后我想将我的打包结构与另一个打包结构进行比较.我想比较这个打包结构的字节值.

根据文档,cmp使用当前区域设置来确定如何比较字符串.但我不希望任何情报应用于比较.我想要最接近memcmp()的东西.显然我不能使用< =>比较我的打包对象,因为它们不是数字.

在Perl中比较打包字符串的最佳方法是什么?

旁注:我一直在阅读this article on efficient sorting in Perl,它注意到普通排序函数使用类似memcmp的算法来比较结构.我想知道如何在不使用sort的情况下实现这样的比较.

解决方法

禁用块的区域设置注意事项并像往常一样使用cmp:
sub mycmp {
  no locale;
  $_[0] cmp $_[1];
}

perlop文档提供

lt,le,ge,gt and cmp use the collation (sort) order specified by the current locale if use locale is in effect. See 07001.

然后在@L_301_4@

The default behavior is restored with the no locale pragma,or upon reaching the end of block enclosing use locale.

例如,跑步

my($one,$two) = map pack("N",$_) => 1,2;
say mycmp($one,$two);
say mycmp($two,$one);

输出

-1
1

猜你在找的Perl相关文章