ファイルの中身を一括置換

たくさんあるファイルの1行目だけを特定文字列(今回は「delete」)に置換。
いろいろ調べつつやったら、思ったことができたけど、ここまでに至る道のりが遠かった…。


#!/usr/bin/perl
use strict;
use warnings;

################################################################################
my $inputfile="200";  # 対象ファイルの検索文字列を指定
my $inputdir=".";     # 対象ディレクトリ
my $outputdir="NEW";  # 新規作成ディレクトリ
################################################################################

################################################################################
my @dir =();
my @list =();
my $filename = 0;
################################################################################

################################################################################
#undef $/;            # 一気読み込み(今回は未使用、というか理解できていなかった)
################################################################################


opendir DIR ,"$inputdir" or die "can't open $inputdir :$!";

unless(-d $outputdir){
    mkdir $outputdir,0700;
    print "mkdir $outputdir is success!\n";
}

@dir = readdir DIR;
# print @dir;

closedir DIR;
@list = grep {/^$inputfile/} @dir;


foreach(@list){
    $filename = $_;
    open (IN,"<$inputdir/$filename") or die;
    open (OUT, ">$outputdir/$filename") or die;
    while(<IN>){
        if($.==1){
            $_ = "delete";
            print OUT "$_\n";
        }else{
            print OUT $_;
        }
    }
    close(IN);
    close(OUT);
}
print "finish!!\n";