0

私の問題は要約すると、同じHTMLページの複数のバージョンがあり、このページがPerlを使用して変更されたかどうかを知りたいです。これらのファイルには、html/javascriptと書かれた英語が含まれています。ユーザーが変更を追跡するページを決定すると、変更はWebインターフェイスでユーザーに表示されます。Webサイトが含まれているサーバー上のPerlスクリプトは、これらのページを時間の経過とともにダウンロードし、違いがないか確認します。

これまでのところ、ページが変更されたかどうかは識別できますが、追加または削除されたものは識別できません。これは、ファイルを独自の行の単語のみにフォーマットし、行ごとに比較することで実行されます。私は、変更が書かれる可能性が高いことを知っています。つまり、新しい文が追加または削除されました。この変化を正確に特定できるようにしたいと思います。

今日はText::ParagraphDiffを使おうとしてしばらく過ごしましたが、役に立ちませんでした。2つの内容を何度も繰り返す1つの長いファイルになりますが、強調表示された変更はありません。

だから私は誰かがこれを行うためのベストプラクティスや好ましい方法を知っているかどうか尋ねたいと思いました。ファイルがいつ変更され、いつ再び一致するかを追跡する長いアルゴリズムを開発する必要があるのではないかと心配しています。

4

2 に答える 2

2

これらのファイルを git や svn などのソース コード管理システムに保存することをお勧めします。そうすれば、ファイルのバージョン管理されたコピーが利用可能になり、それを使用して差分を取得したり (シェルにシェルアウトするだけです)、失われた/上書きされた可能性のあるものをすべて回復したりできます。あらゆる種類の差分を作成するには、元のファイルが必要です。本番システムでファイルが変更されたかどうかを判断するには、ファイルの日付/時刻スタンプ (mtime と ctime の両方) とファイルのチェックサムからの出力 (md5sum -b [file]) の組み合わせを使用します。これらの値が取得されます。アーカイブデータベースに保存されます。

于 2013-03-05T15:38:09.320 に答える
0

CPAN でuntemplateユーティリティを確認します。同じテンプレートを使用して生成されたと仮定して、2 つ (またはそれ以上) の構造化 HTML ファイルをXPathで比較します。これは典型的なセッションのスクリーンショットです:

テンプレート化解除

于 2013-03-05T22:39:30.070 に答える