Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl-SHA1与PHP不匹配_Php_Perl_Md5_Sha1 - Fatal编程技术网

Perl-SHA1与PHP不匹配

Perl-SHA1与PHP不匹配,php,perl,md5,sha1,Php,Perl,Md5,Sha1,我缺乏perl方面的经验。但是,从我在网上读到的和在谷歌上看到的这个问题;perl的md5、sha1、sha256。。。应该返回与php或任何其他语言相同的哈希值,但不是 我有什么误解或遗漏的吗 Perl代码:(v5.14.2) PHP代码:(v5.4) 您的程序应该如下所示: use Digest::SHA 'sha1_hex'; print sha1_hex("test"); 或 当您调用Digest::SHA->sha1_hex(“test”),您使用的是所谓的“间接对象”表示法,它相当

我缺乏perl方面的经验。但是,从我在网上读到的和在谷歌上看到的这个问题;perl的md5、sha1、sha256。。。应该返回与php或任何其他语言相同的哈希值,但不是

我有什么误解或遗漏的吗

Perl代码:(v5.14.2)

PHP代码:(v5.4)


您的程序应该如下所示:

use Digest::SHA 'sha1_hex';
print sha1_hex("test");

当您调用
Digest::SHA->sha1_hex(“test”),您使用的是所谓的“间接对象”表示法,它相当于
sha1_hex(“摘要::SHA”,“测试”)
。这就是您得到不同哈希的原因:

use Digest::SHA 'sha1_hex';
say sha1_hex("Digest::SHAtest")
# -> e2412033b6d0070b931d01b0d1783b937608eb7f

$perl-MDigest::SHA=sha1_hex-E'say sha1_hex(“test”)
产生了
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
实际上这是一个直接的方法调用,而不是间接的对象表示法。间接对象表示法是
my$result=methodname$object@arguments
,而标准(直接)方法调用类似于
my$result=$object->method(@arguments)
。但在这种情况下,这两种方法都不可取,因为
sha1_hex
是一种函数而不是一种方法。
use Digest::SHA 'sha1_hex';
print sha1_hex("test");
use Digest::SHA;
print Digest::SHA::sha1_hex("test"); # note ::
use Digest::SHA 'sha1_hex';
say sha1_hex("Digest::SHAtest")
# -> e2412033b6d0070b931d01b0d1783b937608eb7f