Perlによるディレクトリ内の連続的な大量データ処理
Perlのテキスト処理に関する質問です.やりたいことはあるディレクトリ内に10000個ほどの(1)のようなテキストデータがあります.ここで私は(2)のプログラムを作成しました.しかしながら,このプログラムだと10000個あるテキストデータの一つしか処理できません.この処理内容をディレクトリ全体に適用させる方法はありますでしょうか?File::Find::Ruleなどがネット上にあったので使おうと努力しましたができませんでした.どなたかよろしくお願いします.
(1)
2020 01 01 00 109.18970 18.36816 -2.317 -2.459 292.712 0.013 91.276 30.618 292.712 0.013 -2.317 -2.459 998.793 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
2020 01 01 00 109.54297 18.39178 -2.702 -2.652 292.653 0.013 90.044 30.676 292.653 0.013 -2.702 -2.652 993.902 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
・
・
・
・
(2)
use warnings;
open INFILE, '<', '2020-01-01_00.txt' or die "file open error: $!";
while( <INFILE> ){
chomp if( /\n$/ );
$Year = substr($_,0,4);
chomp if( /\n$/ );
$Month = substr($_,5,2);
chomp if( /\n$/ );
$Day = substr($_,8,2);
chomp if( /\n$/ );
$Time = substr($_,11,2);
chomp if( /\n$/ );
$Lon = substr($_,16,9);
chomp if( /\n$/ );
$Lat = substr($_,29,8);
chomp if( /\n$/ );
$Temp = substr($_,57,7);
chomp if( /\n$/ );
$Hum = substr($_,76,6);
chomp if( /\n$/ );
$Ozone = substr($_,85,6);
chomp if( /\n$/ );
$Rad = substr($_,140,5);
$data = $Year. "-".$Month."-".$Day." ".$Time." ".$Lon." ".$Lat." ".$Ozone." ".$Rad." ".$Hum." ".$Temp."\n";
open($data, ">", "data.txt") or die("error :$!");
}
# ファイルを閉じる
close INFILE;
exit;
補足
ありがとうございます。 下記にてテストしてみます。 BEGIN{ORS="\n"} { if(substr($0, 5, 1) == "1"){ if(substr($0, 6, 2) == "2"){ print substr($0, 1,138) } } }