我正在 RT (http://bestpractical.com/rt) 中进行一些模板编程,它使用 Perl。不幸的是,我只是偶尔玩弄 Perl。
我正在尝试调用一个以以下内容开头的子过程:
sub PrepareEmailUsingTemplate {
my %args = (
Template => '',
Arguments => {},
@_
);
由于这是 lib 的一部分,因此我无法更改它。
我对它的调用是:
my ($template, $msg) = RT::Interface::Email->PrepareEmailUsingTemplate(
Template => 'CCReplyFirstMessage' );
return (0, $msg) unless $template;
我在/opt/rt4/sbin/../lib/RT/Interface/Email.pm 第 552 行得到“散列分配中的奇数元素。(/opt/rt4/sbin/../lib/RT/Interface/Email.pm:552),其中是子的第一行。
我知道我在传递参数时做了一些奇怪的事情。我应该如何通过它?
最佳答案
PrepareEmailUsingTemplate
不是类方法,它是一个简单的函数。你想这样称呼它:
my ($template, $msg) = RT::Interface::Email::PrepareEmailUsingTemplate(
Template => 'CCReplyFirstMessage' );
return (0, $msg) unless $template;
当您使用
->
调用它时, 您的 @_
最终会得到 三 值:你的两个哈希值和开头的类名。作为类方法调用它的结果将是这样的:my %args = (
Template => '',
Arguments => {},
'RT::Interface::Email::PrepareEmailUsingTemplate',
Template => 'CCReplyFirstMessage'
);
这就是您的“哈希分配中的奇数元素”错误的来源。
关于perl - 获取 "Odd number of elements in hash assignment"时如何传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529978/