Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Perl添加Google日历项时出现XML错误_Perl_Xpath_Google Calendar Api_Cpan - Fatal编程技术网

使用Perl添加Google日历项时出现XML错误

使用Perl添加Google日历项时出现XML错误,perl,xpath,google-calendar-api,cpan,Perl,Xpath,Google Calendar Api,Cpan,有一个带有日期和名称的数组,我想使用以下子例程将事件添加到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 =

有一个带有日期和名称的数组,我想使用以下子例程将事件添加到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)中运行它,它就可以正常运行了,这些事件就会被添加到google日历中。 如果它在debian服务器上执行,则会收到以下错误,即我提出此问题的原因:

没有命名空间与前缀匹配:xmlns位于/usr/local/share/perl/5.10.1/XML/XPath/Node/Element.pm第261行。


CPAN在两台机器上报告相同的事情,即Net::Google::Calendar及其依赖项都已安装。那些
die
s也不起作用,总是同样的错误。我意识到这个模块是alpha,但是为什么会有差异?

我猜Google模块没有为xml响应中的条目设置正确的名称空间。它将返回默认名称空间(nothing)。条目可能看起来像,如果不将名称空间设置为somename,则应用程序无法检索该数据。默认名称空间是“xmls”,因此默认名称空间正在查找类似的标记,但找不到任何标记。(每次安装时,默认名称空间可能会有所不同-请检查xmlib版本,我记得最近将默认名称空间更改为“xmlns”以强制使用名称空间)

如果看不到xml响应,就很难正确回答。是否有一种方法可以捕获或转储对文件的响应。一旦看到标题,就可以看到问题所在。如果xml响应是正确的,那么模块没有设置名称空间,这将是一个错误


是的,这是一个线索,我会检查这些东西,但现在我想我没有办法捕获responcexmllib xmllib perl是从发行版存储库以及xmllib perl手动更新的,现在似乎已经解决了这个问题!