[英]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.