我正在尝试获取一些代码,这些代码允许我检查“internetconnectivity”并将布尔值(0,1)存储到文本文件中。我在更新互联网连接的代码时遇到问题,它适用于初始执行,但是当我更改互联网环境时,文本文件无法更新。我试图使用无限循环来允许连续检查sleep()以防止我的计算机自行煎炸。
非常感谢任何帮助。
use strict;
use Net::Ping;
my $filename = 'internetConnectivityStorage.txt';
open(my $fh, '>:encoding(UTF-8)', $filename);
while() {
my $x = Net::Ping->new("icmp");
if ($x->ping("8.8.8.8", 1)) {
print $fh "1";
} else {
print $fh "0";
}
close($fh);
sleep(3)
}
PS。是noob和perl的新手。幸存下来的谷歌搜索和猜测;)
答案 0 :(得分:2)
use strict;
use warnings;
use Net::Ping;
my $filename = 'internetConnectivityStorage.txt';
while() {
open(my $fh, '>:encoding(UTF-8)', $filename);
my $x = Net::Ping->new("icmp");
print {$fh} ($x->ping("8.8.8.8", 1)) ? 1 : 0;
close($fh);
sleep(3)
}
一些变化。我将open打开到while循环,我想你想在while循环的每次迭代中更新文件的内容。
答案 1 :(得分:1)
您正在打开文件一次,但在while循环中关闭文件句柄,因此无法更新。
将close($fh);
移到while循环的结束大括号后面。
另外,我相信输出会在写入文件之前进行缓冲,因此您不会立即看到它。
在脚本开头添加$| = 1;
以关闭输出缓冲。