perl脚本在vmware服务器中工作但在vmware ESXi中失败

时间:2012-03-02 00:44:29

标签: perl

这个问题让我感到很困惑:我在vmware server 2.0上运行了以下脚本:

#!/usr/local/bin/perl
# server (transmitter)
use strict;
use IO::Socket::Multicast6;
use IO::Interface;
use constant GROUP => "235.1.1.2";
use constant PORT  => "3000";
my $sock = IO::Socket::Multicast6->new(
                   Proto=>"udp",
                   Domain=>AF_INET,
                   PeerAddr=>GROUP,
                   PeerPort=>PORT);
$sock->mcast_if("eth1");
$sock->mcast_ttl(10);
while (1) {
   my $message = localtime();
   $sock->send($message) || die "Could not  send: $!";
} continue {
   sleep 4;
}

它在vmware服务器上运行良好。我已将此VM克隆到EXSi服务器,但运行与运行该脚本的虚拟机完全相同的副本,我收到以下错误:

无法在未定义的值上调用方法“mcast_if”

我真的很困惑,因为我不确定问题是什么。 除了在两台机器上运行的CPU之外,没有什么不同,但我不知道如此低级别的东西可能导致问题,但我可能是错的。 perl -d不是很有帮助。 谢谢。

2 个答案:

答案 0 :(得分:3)

它无法创建套接字,使用一些错误检查来尝试找出原因。例如:

my $sock = IO::Socket::Multicast6->new(
   Proto=>"udp",
   Domain=>AF_INET,
   PeerAddr=>GROUP,
   PeerPort=>PORT)
   or die "Socket failed: $!";

答案 1 :(得分:0)

new()构造函数失败,但没有引发异常。我不知道它的API:有什么方法让它告诉你为什么?

否则你可能会尝试errno(即$!)。