次のコード(簡略化)で「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 ...
}
これについて調査しようとしましたが、シフトまたはブレス機能を使用してこれを解決する方法が見つかりません。
渡されたパラメーターを出力するように InfluxDB モジュールを編集しました。これが私が発見したものです。
最初の繰り返しの場合:
Mouse::Meta::Class::__ANON__::2=HASH(0x2359398)
host
192.168.0.93
port
8086
username
root
password
root
database
test_database
2 回目の繰り返しの場合:
Mouse::Meta::Class::__ANON__::6=HASH(0x2359398)
192.168.0.93
port
8086
username
root
password
root
database
test_database
ご覧のとおり、2 回目の繰り返しには「ホスト」はありません。->(InfluxDB->new) の代わりに :: (例: InfluxDB::new()) を使用して関数 new を呼び出すと、この動作が見られました。