perl - 获取 "Odd number of elements in hash assignment"时如何传递参数

标签 perl rt

我正在 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/

相关文章:

linux - 在 Linux Mint 14 Nadia 上使用 Apache2 配置 Request Tracker 4.0

java - 无法将附件添加到新 RT 票证中

embedded - EnergyMicro 和 EZradio Pro (Si4463)

正则表达式 - 可选引号之间

bash - 用 awk 或 sed 替换和递增字母和数字

C++ regex_search 与 perl 中的正则表达式匹配

perl - 有人试图通过 PCOMM 或 x3270 使用 Perl 执行自动化任务吗?

perl - 解析 html 文件以便稍后将其输入数据库的最简单方法是什么?

mysql - RT4 mysql字符编码问题

python - rtkit 给出 ValueError : need more than 1 value to unpack