ファイルの中身を一括置換
たくさんあるファイルの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";