断続的なドロップアウトがあるため、3G モデムからさまざまなパラメータを抽出してログに記録したいと考えています。そのため、wget を使用3Ginfo.html
して 3G モデムから読み取り、コンテンツをファイルに配置していますcontents.txt
。Notepad++ を使用してこのファイルを開くと、すべてのデータが表示されます。
私の評判のため、写真を投稿することはできません。したがって、以下のコードは私ができる最善の方法です。Notepad++ から ([すべての文字を表示] をオンにして)、次のようになります。
<tr>[LF]
<td class='hd'>Signal Strength:</td>[LF]
<td>[LF]
-72[CR]
 (dBm) (High)</td>[LF]
</tr>[LF]
ただし、Perl からファイルを 1 行ずつ読み取ると、Notepad++ で報告される行数よりも行数が少なく、データが欠落していることは明らかです。この場合、実際の信号強度の値がありません。
ファイルを読み取る Perl コードは次のとおりです。
open hLOGFILE, "<output.txt";
while (<hLOGFILE>)
{
print "Line no $. Text is $_ ";
}
これが出力です(まだ写真を投稿できないため、テキストとして):
Line no 98 Text is <tr>
Line no 99 Text is <td class='hd'>Signal Strength:</td>
Line no 100 Text is <td>
 (dBm) (High)</td>
Line no 102 Text is </tr>
<cr>
欠落している行があり、それが行末ターミネータに関連していることは明らかです。ファイルを丸呑みしようとしましたが、まだ行がありません。
バイトごとに読み取り、その方法でファイルを解析しようとすることを除けば (これはあまり魅力的ではありません)、解決策が見つかりません。
私の計画は、関心のある行を約 1 分ごとに単純に抽出してログに記録することです。
さまざまなエンコーディングを指定してファイルを開こうとしましたが、まだ喜びはありません。Notepad++ がすべてのデータを読み取って表示できる場合、なぜ Perl で機能しないのですか。Windows XP コマンド ラインから使用more
すると、データも失われていることが示されます。
クロムからソースを表示すると、
<tr>
<td class='hd'>Received Signal Code Power(RSCP):</td>
<td align='center'> -78 dBm</td>
</tr>