gpt4 book ai didi

perl - 我如何比较 Perl 中的 md5 校验和?

转载 作者:行者123 更新时间:2023-12-02 06:45:06 25 4
gpt4 key购买 nike

我正在尝试比较文件的校验和值。一个变量$a有校验和(md5sum命令的输出,只有十六进制部分)相同的值在变量 $b 中。

如果我这样做 ($a == $b),我会得到一个错误,但是如果我这样做 ($a eq $b),它会给出不相等的结果.

感谢您的回答,它在修剪空格后的字符串比较中起作用,尽管使用 chomp 不起作用。

最佳答案

你比较的是字符串,而不是数字,所以一定要使用 eq
也可以使用 lc() , 和 chomp()$a=~s/^\s+//;$a=~s/\s+$//;
您确实有一个相当不错的选择,可以使用 hex() 将输入转换为数字。并使用 ==。尝试:

if (hex($a) == hex($b)){}

这完全取决于您如何处理 md5sum 命令的输出。我的看起来像这样:

dlamblin$ md5 .bash_history 
MD5 (.bash_history) = 61a4c02cbd94ad8604874dda16bdd0d6

所以我用这个来处理它:

dlamblin$ perl -e '$a=`md5 .bash_history`;$a=~s/^.*= |\s+$//g;print $a,"\n";'
61a4c02cbd94ad8604874dda16bdd0d6

现在我确实注意到 hex() 有一个整数溢出错误,所以你需要 use bigint;

dlamblin$ perl -e '
$a=`md5 .bash_history`;$a=~s/^.*= |\s+$//g;print hex($a),"\n";'
Integer overflow in hexadecimal number at -e line 1.
1.29790550043292e+38
dlamblin$ perl -Mbigint -e '
$a=`md5 .bash_history`;$a=~s/^.*= |\s+$//g;print hex($a),"\n";'
129790550043292010470229278762995667158

关于perl - 我如何比较 Perl 中的 md5 校验和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1544417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com