如何比较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.

然后在perllocale

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
原文链接:https://www.f2er.com/Perl/171338.html

猜你在找的Perl相关文章