こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Perl ログファイルの一部修正

ご教示お願い致します。

$log = "ファイルの時間";

@NEWTM = grep(/,$log,/, @DATA);
last if ($j > @NEWTM);
$data = $NEWTM[$j];

my ($LogNo,$log,$Logname,$Logtitle,$Logtext,$Logpassword,$Logip,$Lognewtm,$Logcount) = split(/,/, $data);

++$Logcount;

for my $j (0 .. $#DATA) {
if ($DATA[$j] =~ /,$log/) {
$DATA[$j] = "$LogNo,$log,$Logname,$Logtitle,$Logtext,$Logpassword,$Logip,$Lognewtm,$Logcount\n";
last;
}
}

各スレッドの単純なアクセスカウンタを設置しました。

my ($LogNo,$log,$Logname,$Logtitle,$Logtext,$Logpassword,$Logip,$Lognewtm,$Logcount) = split(/,/, $data);

これは1発目に書き込まれたものを一度書き出し

++$Logcount;

で+1をし、

$DATA[$j] = "$LogNo,$log,$Logname,$Logtitle,$Logtext,$Logpassword,$Logip,$Lognewtm,$Logcount\n";

再度、書き込むという処理なのですが、

$Logcount以外は、書き出す必要もないですし、書き込む必要もありません。

この場合での$Logcountだけを書き換える処理をしたいのですが、どのようにするのでしょうか?

投稿日時 - 2017-08-11 14:50:52

QNo.9361831

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

全部取り出すのとたいして変わらないけど
$Logcountだならザックリとこんな感じ

my $Log = "55,aa,44,bb,33,cc,22,1\n";
my ($zenbu,$Logcount) = $Log =~ m[(.+,)(\d+$)];
++$Logcount;
$Log = "$zenbu$Logcount";
print"$Log\n";

投稿日時 - 2017-08-11 20:08:22