检查互联网连接&输出到txt文件[PERL]

时间:2017-11-03 09:51:30

标签: perl

我正在尝试获取一些代码,这些代码允许我检查“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的新手。幸存下来的谷歌搜索和猜测;)

2 个答案:

答案 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;以关闭输出缓冲。