Perl:有没有办法将元数据与函数相关联

时间:2016-02-24 20:00:33

标签: perl paradigms

将元数据与函数关联起来非常有用。

例如,在Web框架中,页面请求通常由控制器中的函数处理。

在其他地方,指定了URL和函数之间的映射。

能够写下这样的东西是非常有用的:

<message
    from='chatRoom@se.dev.openfire'
    to='userA@dev.openfire'>
  <x xmlns='http://jabber.org/protocol/muc#user'>
    <invite from='userB@dev.openfire'>
      <reason>
        Hey UserA, this is the place for all good witches!
      </reason>
    </invite>
    <password>xyz</password>
  </x>
</message>

这样做的好处是:

  • 您可以在一个地方获得有关该功能的所有信息
  • 查看代码的正确性更容易。
  • 登录检查和健全检查等事情可以更容易。

我只是好奇:

  • 您认为这种功能元数据会很有用。
  • 有没有人想出一个合理的方法在Perl中做到这一点?
  • 还有其他语言可以做这类事吗?

1 个答案:

答案 0 :(得分:4)

我确实遇到过多次这种用例,例如将描述和帮助文本相关联或使用“命令处理程序”子解析信息。人们采取了许多方法,但我采用的方法是使用子程序属性。我编写了一个完整的CPAN模块Attribute::Storage,以帮助声明和访问内容。

例如(直接引用模块文档),您可以安排为命令处理程序提供如下元数据:

sub do_copy
   :Description(Copy from SOURCE to DESTINATION)
   :Description(Optionally preserves attributes)
   :Argument("SOURCE")
   :Argument("DESTINATION")
   :Option("attrs")
   :Option("verbose")
{
   ...
}