我想要做的是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
但是当我将配置文件中的值从“在线”更改为“离线”时,终端仍然会像上面那样打印。如果我从配置文件中更改值,如何使其更新?
答案 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;
}