我很好奇,爲什麼這給出了正確的答案:爲什麼sha1_hex(「test」)返回的值不同於Digest :: SHA-> sha1_hex(「test」)?
use Digest::SHA qw(sha1_hex);
print sha1_hex("test");
但這並不:
use Digest::SHA;
print Digest::SHA->sha1_hex("test");
我很好奇,爲什麼這給出了正確的答案:爲什麼sha1_hex(「test」)返回的值不同於Digest :: SHA-> sha1_hex(「test」)?
use Digest::SHA qw(sha1_hex);
print sha1_hex("test");
但這並不:
use Digest::SHA;
print Digest::SHA->sha1_hex("test");
sha1_hex
不是方法。你想
Digest::SHA::sha1_hex("test")
Digest::SHA->sha1_hex("test")
基本上等同於
Digest::SHA->can('sha1_hex')->("Digest::SHA", "test")
注意額外的參數。
在Digest::SHA->sha1_hex("test")
使用箭頭符號的導致函數調用被解析爲在封裝/類的方法調用(同樣的事情在Perl)Digest::SHA
,這意味着Perl會實際上做Digest::SHA::sha1_hex('Digest::SHA', 'test')
。要做你想做的事情,改爲寫Digest::SHA::sha1_hex('test')
。