我想知道如何在以下代码(简化)中避免“new() 的参数数量为奇数”错误。该代码仅适用于第一次迭代。
#!/usr/bin/perl
use InfluxDB;
for (;;) {
load1();
sleep 5;
}
sub load1 {
my $ix = InfluxDB->new(host => '192.168.0.93', port => 8086, username => 'root', password => 'root', database => 'test');
## do some stuffs ...
}
我曾尝试对此进行研究,但找不到使用 shift 或 bless 函数来解决此问题的方法。
我已经编辑了 InfluxDB 模块来打印传递的参数。这就是我发现的;
对于第一次迭代:
Mouse::Meta::Class::__ANON__::2=HASH(0x2359398)
host
192.168.0.93
port
8086
username
root
password
root
database
test_database
对于第二次迭代:
Mouse::Meta::Class::__ANON__::6=HASH(0x2359398)
192.168.0.93
port
8086
username
root
password
root
database
test_database
所以我们可以看到,对于第二次迭代,没有“主机”。我曾经在使用 :: (ex. InfluxDB::new()) 而不是 ->(InfluxDB->new) 调用函数 new 时看到这种行为。