拥有包含日期和名称的数组我想使用以下子例程将事件添加到Google日历中:
use Net::Google::Calendar;
use Date::Manip;
use Date::Calc qw(Add_Delta_Days);
my $username #removed for stackoverflow
my $password #removed for stackoverflow
my $cal = Net::Google::Calendar->new;
my $from = new Date::Manip::Date;
my $to = new Date::Manip::Date;
my @f;
my @t;
my $year;
my $month;
my $day;
$cal->login($username, $password) or $MESSAGERED = "Google Calendar login failed.";
my $entry;
#[0] name
#[1] from
#[2] to
#[3] hid
for my $i (0 .. $#ALL_HOLIDAYS) {
$from->parse($ALL_HOLIDAYS[$i][1]);
$to->parse($ALL_HOLIDAYS[$i][2]);
@f = $from->value();
@t = $to->value();
# a day added in line with our "last day of absence"
($year, $month, $day) = Add_Delta_Days($t[0], $t[1], $t[2], 1);
$entry = Net::Google::Calendar::Entry->new() or die " 518 ++++++++++ ";
$entry->when(DateTime->new(year => $f[0], month => $f[1], day => $f[2]), DateTime->new(year => $year, month => $month, day => $day)) or die " 519 ++++++++++ ";
$entry->title($ALL_HOLIDAYS[$i][0]) or die " 520 ++++++++++ ";
$entry->content("Holiday") or die " 521 ++++++++++ ";
$entry->transparency('transparent') or die " 522++++++++++ ";
$entry->status('confirmed') or die " 523 ++++++++++ ";
if ($cal->add_entry($entry)) {
&mark_entry_as_googd($ALL_HOLIDAYS[$i][3]);
} else {
$MESSAGEORANGE = "Unable to submit entry for ".$ALL_HOLIDAYS[$i][0]
}
}
$MESSAGEGREEN = "Google Calendar populated";
print $MESSAGERED.$MESSAGEGREEN.$MESSAGEORANGE;
一旦我关闭这个脚本并在我的控制台(osx)中运行它就可以运行,事件被添加到谷歌日历中。 如果它在debian服务器上执行,则会收到以下错误,即我提出此问题的原因:
No namespace matches prefix: xmlns at /usr/local/share/perl/5.10.1/XML/XPath/Node/Element.pm line 261.
CPAN在两台机器上报告相同的事情,即安装了Net :: Google :: Calendar及其依赖项。这些die
中的任何一个都不起作用,它始终是同一个错误。我意识到这个模块是alpha,但仍然存在差异?
答案 0 :(得分:1)
我的猜测是Google模块没有为xml响应中的条目设置正确的命名空间。它回落到默认命名空间(没有)。参赛作品可能看起来像< somename:tag>如果不将名称空间设置为somename,则应用程序无法检索该数据。默认为'xmls',因此默认命名空间正在寻找像< xmls:tag>并且找不到任何。 (每个安装的默认命名空间可能不同 - 也检查xmlib版本,我记得最近默认更改为'xmlns'以强制命名空间使用)。
没有看到xml响应,很难正确回答。有没有办法可以捕获或转储对文件的响应。看到标题后,您可以看到问题所在。如果xml响应是正确的,那么模块不会设置命名空间,这将是他们最终的错误。