【问题标题】:Add node CATEGORIES to vcard with perl module "vCard::AddressBook"使用 perl 模块“vCard::AddressBook”将节点类别添加到 vcard
【发布时间】:2021-01-28 06:48:50
【问题描述】:

在使用 perl 模块 vCard::AddressBook (https://metacpan.org/pod/vCard::AddressBook) 时,我找不到将 CATEGORIESORG 等节点添加到 vcard 对象的可能性。

输出应如下所示:

BEGIN:VCARD
VERSION:4.0
...
N:Doe;John;;;
...
ORG:Organization_01;
CATEGORIES:Cat_01
...
END:VCARD

当我使用以下代码时:

use vCard::AddressBook;
my $address_book = vCard::AddressBook->new();
my $vcard = $address_book->add_vcard;
$vcard->given_names(['John']);
$vcard->family_names(['Doe']);
$vcard->categories(['Cat_01']);  ## DOES NOT WORK
my $file = $address_book->as_file('file.vcf');

我收到以下错误:

Can't locate object method "categories" via package "vCard" at tmp2.pl line 6.

在我的 vcard 文件中获取其他节点(如 CATEGORIES)的最佳方法是什么?

顺便说一句:RFC6350 定义了它...https://www.rfc-editor.org/rfc/rfc6350#section-6.7.1

【问题讨论】:

  • 另见this问题
  • 我建议你看看上面的问题并创建一个补丁。作者通常反应灵敏。他最近没有照顾这么多,但我敢肯定,如果你在创建 PR 后给他发电子邮件,他会合并它或给你一个 COMAINT 来处理它。

标签: perl addressbook vcf-vcard


【解决方案1】:

https://metacpan.org/pod/Text::vCard::Precisely 似乎更符合 RFC6350:

use Text::vCard::Precisely;
my $vcard = Text::vCard::Precisely->new( version => '4.0' );
$vcard->n(['John','Doe']);
$vcard->categories([qw/Cat_01 Cat_02 Cat_03/]);
print $vcard->as_string();

打印:

BEGIN:VCARD
VERSION:4.0
N:John;Doe;;;
CATEGORIES:Cat_01,Cat_02,Cat_03
END:VCARD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2011-03-26
    • 2017-01-23
    相关资源
    最近更新 更多