• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ログを複数同時に削除)

ログを複数同時に削除する方法について

このQ&Aのポイント
  • Perlでログを複数同時に削除する方法がわかりません。ログファイル「log.txt」に保存されているデータに対して、フォームのチェックボックスから送信された値とマッチする行を削除したいと考えています。
  • 現在はラジオボタンとforeachループを使用して1行だけ削除できるようにしていますが、複数行を同時に削除するための方法が分かりません。現在試している方法では、1つ目のチェックボックスに対してマッチした場合でも、2つ目のチェックボックスにはマッチしないため、望んだ結果が得られません。
  • もし他の方法があるのであれば、詳しい方のアドバイスをいただきたいです。お願いします!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

#!/usr/bin/perl use warnings; use strict; my @logs = <DATA>; my @dels = qw(1234 1236); my @new_logs = (); foreach my $log (@logs) { my $del_match = 0; DEL_CHK: foreach my $del (@dels) { if ( $log =~ /Num=$del<>/ ) { $del_match = 1; last DEL_CHK; } } push @new_logs, $log if $del_match == 0; } print foreach @new_logs; __DATA__ Num=1234<>title=111 Num=1235<>title=222 Num=1236<>title=333 Num=1237<>title=444 Num=1238<>title=555 --- Num=1235<>title=222 Num=1237<>title=444 Num=1238<>title=555

RH01
質問者

お礼

早速アドバイスありがとうございます。 この部分だけでとりあえずテストしてみたら上手くいきました! やり方自体というよりは、$del_matchなどをうまく使わないといけなかったんですね。。大変勉強になりました。 どうもありがとうございました。

関連するQ&A