在perl中循环更新值

时间:2014-03-18 04:26:56

标签: perl loops ubuntu

我想要做的是perl代码将从配置文件中读取并以无限循环打印。更改配置文件中的值后,终端上显示的循环中的值也将更新。有人可以帮我解决这个问题吗?

这是我的代码:

#!/usr/bin/perl
use warnings;
use strict;
use IO::Socket::INET;
use CGI;
use Config::Tiny;
use Data::Dumper;
use CGI::Carp qw(fatalsToBrowser);

$| = 1;

# Write some data to the client
my $file = "/home/gentoo/config.conf";

my $Config = Config::Tiny->read($file);

my $status_in_file = $Config->{"offline_online_status"}->{"offline_online_status.offline_online_state"};
my $status_mode = $Config->{"data_silence_mode"}->{"data_silence_mode.data_silence_mode"};


while (1) {
    sleep 5;
    print "$status_in_file\n";
print "$status_mode\n";
}

终端仅打印第一个运行值,但不打印更新的值。它只会显示:

online
disabled
online
disabled
online
disabled

但是当我将配置文件中的值从“在线”更改为“离线”时,终端仍然会像上面那样打印。如果我从配置文件中更改值,如何使其更新?

1 个答案:

答案 0 :(得分:2)

您可以将Config::Tiny->read()放在while(1) { ... }中,执行以下操作:

while (1) {
    my $Config = Config::Tiny->read($file);

    my $status_in_file = $Config->{"offline_online_status"}->{"offline_online_status.offline_online_state"};
    my $status_mode = $Config->{"data_silence_mode"}->{"data_silence_mode.data_silence_mode"};

    print "$status_in_file\n";
    print "$status_mode\n";

    sleep 5;
}