use Mosche;
Ich denke mal, $akt_monat ist der Startmonat. Das heisst, alle Daten von Beginn an gehören zu $akt_monat. Du liest danach Zeile für Zeile und vergleichst die aktuelle Zeile mit der letzten (den Punkt bekommst du mit substr weg). Wenn der aktuelle Tag kleiner ist als der vorherige, beginnt ein neuer Monat ($akt_monat erhöhen).
im Prinzip richtig, aber :)
Wenn zu dem 1.Mai dann vielleicht auch ein 2.Mai und 3.Mai kommen würde, dann geht dieser Vergleich nicht mehr :(
Wie sehen die Daten, die du bekommst, denn genau aus.
Ich dachte, etwa so: (die Punkte laß ich der Einfachkeit halber weg)
my @dates = ((1..30), (1..31), (1..30));
also quasi ein Array von Tagzahlen 1-30 für April,
1-31 für Mai, 1-30 für Juni, ...
my $akt_monat = 4;
my @dates_formatted;
my $pre = shift @dates; # Startwert für $pre
foreach (@dates) {
push (@dates_formatted, "$pre.$akt_monat.");
# die aktuelle Tagzahl ist kleiner als die letzte: neuer Monat
++$akt_monat if $_ < $pre;
$pre = $_;
}
$\ = "\n";
print for @dates_formatted;
Und das funktioniert. (getestet)
Wenn deine Daten andere sein sollten, erläutere das bitte nochmal.
use Tschoe qw(Matti);