created: 2023-05-25T06:01:32.684Z

perl の Digest::SHA1=sha1_hex は空文字でもundefでも同じものが返ってくる

perl の Digest::SHA1=sha1_hex は空文字でもundefでも同じものが返ってくる。

$ carton exec perl -MDigest::SHA1=sha1_hex -E 'say sha1_hex("")'
da39a3ee5e6b4b0d3255bfef95601890afd80709
$ carton exec perl -MDigest::SHA1=sha1_hex -E 'say sha1_hex(undef)'
da39a3ee5e6b4b0d3255bfef95601890afd80709

js だと文字列的なものしか渡せなくなっている。(nullは型エラー)

TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received type number (Infinity)

もちろん空文字 ("") を計算した時の結果は同じ。

> const crypto = require("crypto");
> const shasum = crypto.createHash("sha1");
> shasum.update("");
> shasum.digest("hex");
'da39a3ee5e6b4b0d3255bfef95601890afd80709'
単体テストの考え方/使い方
[ad] 単体テストの考え方/使い方
Vladimir Khorikov, 須田智之 (単行本(ソフトカバー))