簡體   English   中英

檢查Internet連接並輸出到txt文件[PERL]

[英]Check Internet Connectivity & Output into txt file [PERL]

我正在嘗試獲取一些代碼,這些代碼使我可以檢查“ internetconnectivity”並將布爾值(0、1)存儲到文本文件中。 我在更新Internet連接的代碼方面遇到問題,它在初始執行時有效,但是當我更改Internet環境時,文本文件無法更新。 我試圖使用一個無限的while循環來允許與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。 我是菜鳥,還是perl的新手。 幸免於谷歌搜索和猜測;)

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)
}

一些變化。 我將打開移至while循環,我認為您希望在while循環的每次迭代中更新文件的內容。

您一次打開了文件,但是在while循環中關閉了文件句柄,因此不會對其進行更新。 close($fh); 在while循環的大括號后面。

另外,我相信輸出將在寫入文件之前先進行緩沖,因此您不會立即看到它。 $| = 1; $| = 1; 在腳本的開頭關閉輸出緩沖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM