#!/usr/bin/perl use strict; use warnings; use Text::CSV; use Date::Parse; my $infile='datensatz.csv'; my $outfile='daten_out.txt'; # Ergebnisse. Jedes Jahr ein Arrayeintrag. my @result; # ein Jahr in Sekunden my $one_year=60*60*24*365; # für besseren Wert nutze ein Date Calc Modul # aktueller timestamp; my $now=time(); my $csv = Text::CSV->new() or die( "ERROR CSV: ".Text::CSV->error_diag()."\n" ); open(my $ifh, '<', $infile) or die("ERROR open $infile ($!)\n"); while(my $row = $csv->getline($ifh) ) { my $date=str2time($row->[0]); my $size=$row->[1]; # Modulo war Unsinn my $years=int(($now-$date)/$one_year); $result[$years]->{size}+=$size; $result[$years]->{count}++; } close($ifh); # Ausgabe: open(my $ofh, '>', $outfile) or die("ERROR open $outfile ($!)\n"); for my $year (0..$#result) { next unless($result[$year]); printf $ofh "Daten Alter älter als %u Jahr; Anzahl %u Dateien mit %u Byte Größe\n", $year, $result->{count}, $result->{size}; } close(my $ofh);