0

「boot.log」という名前のファイルがあります。このファイルをパターン マッチングし、特定のキーワードを変更してから、「bootlog.out」という名前のファイルに書き込みます。行われた変更の数を数えて「bootlog.out」に出力する方法がわかりません。foreeach ループとカウンターを使用する必要があることは確かですが、どこにあるのかわかりません。そして、それらの変更を印刷する方法。これが私がこれまでに持っているものです...

open (BOOTLOG, "boot.log") || die "Can't open file named boot.log: $!";
open (LOGOUT, ">bootlog.txt") || die "Can't create file named bootlog.out: $!\n";

while ($_ = <BOOTLOG>)
{
    print $_;
    s/weblog/backupweblog/gi;
    s/bootlog/backupbootlog/gi;
    s/dblog/DBLOG/g;
    print LOGOUT $_;
}

close (LOGOUT) || die "Can't close file named bootlog.txt: $!\n";
close (BOOTLOG) || die "Can't close the file named boot.log: $!";
4

1 に答える 1

5

置換正規表現は、行われた置換の数を返します。例として、コードの更新されたコピーを次に示します。

open (my $bootlog, '<', "boot.log")   || die "Can't open file named boot.log: $!";
open (my $logout, '>', "bootlog.txt") || die "Can't create file named bootlog.out: $!\n";

my $count = 0;
while (<$bootlog>)
{
    print $_;
    $count += s/weblog/backupweblog/gi;
    $count += s/bootlog/backupbootlog/gi;
    $count += s/dblog/DBLOG/g;
    print {$logout} $_;
}

close ($logout)  || die "Can't close file named bootlog.txt: $!\n";
close ($bootlog) || die "Can't close the file named boot.log: $!";
print "Total items changed: $count\n";
于 2013-11-01T04:35:33.843 に答える