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;
お礼
すみません、説明不足でした。 「順番がバラバラ」とは、DBファイルへの記述順のことです。 DBファイルのデータを読み込むとき、データの順序が必要と思ったのですが、データベースでは意味を持たないということを知りませんでした。汗 勉強不足でした。 ただ、質問のスクリプトだと、 テキストファイルに1つしかない内容が、DBファイルでは2つ記述されていたりしていたので、少しひっかかってしまっていました。 モジュールの問題かなとは思っているのですが、、、