如何在 Mason 代码中创建字符串的 SHA-256 哈希值?

How to create a SHA-256 hash of a string in Mason code?

我正在尝试创建一个字符串的 SHA-256 散列 Mason 按照 Stack Overflow 问题的答案 SHA256 digest in perl 并使用 Digest::SHA 模块

这些是包含该代码的文件 abc.mi 的内容:

use Digest::SHA qw(sha256_hex);
<%init>
    my $message = 'random content';
    my $encryptedMsg = sha256_hex($message);
</%init>

但它抛出以下错误:

Undefined subroutine &Safe::Root0::HTML::Mason::Commands::sha256_hex called

知道为什么它认为 sha256_hex 是未定义的,即使我在文件本身的开头定义了它吗?

这与这是扩展名为 .mi 的 Mason 代码这一事实有关吗?

========== 编辑 ==========

在查看针对该问题发布的答案后,这是我的查询的解决方案。

<%init>
    my $message = 'random content';
    my $encryptedMsg = Digest::SHA::sha256_hex($message);
</%init>

在 Mason 中,您的 Perl 代码需要位于标签内。标签之外的任何内容都只是要包含在输出中的内容。所以你想要这样的东西:

<%init>
  use Digest::SHA qw(sha256_hex);
  my $message = 'random content';
  my $encryptedMsg = sha256_hex($message);
</%init>