0

次のコード(簡略化)で「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 を呼び出すと、この動作が見られました。

4

2 に答える 2