一部のWebサイトからデータをフェッチして処理するためにPerlWWW::Mechanize
パッケージを使用しています。通常、私の行動方法は次のとおりです。
Webページを取得する
$mech->get("$url");
Webページのコンテンツを変数に保存します(ところで、私が知る限り、単一の値に使用されるはずのスカラー内にこの量のテキストを保存するのが正しい方法かどうかはわかりません)
my $list = $mech->content();
私が作成したサブルーチンを使用して、変数の内容をテキストファイルに書き込みます。(
writetoFile
サブルーチンには、パスや既存のファイル検証など、さらにいくつかの機能が含まれています。)writeToFile("$filename.tmp","$path",$list);
追加のファイルを作成して前の手順で作成したファイルのテキストを処理し、処理したコンテンツをそこに保存します(次に、最初の一時ファイルを削除します)。
私が疑問に思うのは、$list
変数内で直接テキストをファイルに保存する前に処理を実行できるかどうかです。プロセス全体は期待どおりに機能していますが、その背後にあるロジックはあまり好きではなく、同じファイルを複数回書き換える必要があるため、少し非効率的です。
編集: 変数の内容を処理するときに私が実際に何を求めているかについてもう少し情報を提供するためだけに。したがって、この場合にWebサイトから取得するデータは、実際には空白行で区切られたアイテムのリストであり、最初の行は私には関係ありません。したがって、このデータの処理中に私が行っているのは2つのことです。
- 空の(CRLF)行を削除します
- 特定のテキストが含まれている場合は、最初の行を削除します。
理想的には、途中で追加のファイルを作成せずに、処理されたリスト(空白スペースと最初の行が削除されていない)をファイルに保存したいと思います。ファイルを保存するために、writeToFile
サブ(私が書いた)を使用します。これは、そのようなファイルがすでに存在するかどうかの検証も実行するためです(ファイルが最終処理の前に保存される場合、writeToFile
は常に既存のファイルを書き換えます)。
それが理にかなっていることを願っています。