私は次のファイルを持っています:
20120127.221500.std|MT:63|ST:1.|ON:ABT.N|DRT:U|SEQ:862461707
80 Bezahlt : 55.04
81 Bezahlt_Umsatz : 200
281 Bezahlt_Zeit : 22:00:02
752 Quelle : CTS OTC
83 Umsatz_gesamt : 5639295
621 VWAP : 54.984104
26 Zeit : 22:00:05
20120127.232408.std|MT:63|ST:1.|ON:ABT.N|DRT:U|SEQ:862507497
41 Schluss : 55.02
120 Schluss_Datum : 27.01.2012
20120128.011558.std|MT:63|ST:1.|ON:ABT.N|DRT:U|SEQ:862559511
25 Datum : 28.01.2012
26 Zeit : 01:01:30
すべての日付(つまり、27.01.2012、28.01.2012)を検索し、最新の日付(つまり、28.01.2012)を今日の日付に置き換えたいと思います。古い日付をすべて古い日付に置き換えたいのですが。私はあなたに例を示します、なぜならあなたは私をよく理解できると思うからです。今日が21.11.2012であると仮定しましょう。2012年1月28日を2012年11月21日に、2012年1月27日を2012年11月20日に置き換えたいと思います。2012年1月26日があった場合は、2012年11月19日に置き換えたいと思います。
誰でも私に手がかりを与えることができますか?
たぶん、アルゴリズムがどのように見えるべきかについてのいくつかのヒントはありますか?私はperlでそれをやりたいです。
私の問題は、どのようにして最も古い日付を特定できるかということです。私は次のようなものから始めました:
open F ,"<$file";
my $content = do{local $/;<F> };
if ($content =~ /BOERSEN : [N|Q]/)
{
$content =~ /(\d\d\.\d\d\.\d\d\d\d)/;
my $d = $1;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year+= 1900;
$mon +=1;
$mon = sprintf("%02d", $mon);
$content =~ s/(\d\d)\.\d\d\.\d\d\d\d/$1\.$mon\.$year/msgi;
my @d = split (/\./, $d);
$d = $d[2].$d[1];
$content =~ s/$d(\d\d)/$year$mon$1/msgi;
}
しかし、それは私が本当に望んでいることではありません。