我试图通过跟随堆栈溢出问题Mason
的答案并使用SHA256 digest in perl模块在Digest::SHA
中创建字符串的SHA-256哈希
这些是包含该代码的文件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
视为未定义,即使我在文件本身的开头定义它?
这有什么事实与Mason代码扩展.mi
有关吗?
==========编辑==========
在查看此问题的答案后,这是我的查询的解决方案。
<%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>