#!/usr/bin/perl -w # (c) 2004 Christoph Berg # This program is free software covered by the GNU GPL v2. # Dieses Skript nimmt eine Telekom-Rechnung, die mit pstotext von pdf in Text # konvertiert wurde und rechnet die Beträge pro MSN zusammen. # Nützlich für Telefonrechnungen von WGs. use strict; sub komma { my $v = shift; $v =~ y/,/./; die "format: $v" unless $v =~ /^\d+\.\d+$/; return $v; } my ($monat, $nr, %gebuehr); while(<>) { print if /^Rechnungsbetrag/; if(/^Summe Monatliche Betr.*ge (.+)/) { $monat = komma($1); print; } if(/^Rufnummer \(06 81\) (.+)/) { $nr = $1; print; } if(/^Summe Verbindungen f.*r oben angegebene Rufnummer (.+)/) { print " Telekom: $1\n"; $gebuehr{$nr} += komma($1); undef $nr; } if($nr and /^Summe (.+) (.+)/) { print " $1: $2\n"; $gebuehr{$nr} += komma($2); undef $nr; } } my %name = ( "9 38 68 87" => "Christoph", "9 38 69 65" => "Torben/Veronika", "9 38 69 85" => "Thomas", ); # Unsere Nachbarinnen kriegen von uns Internet, das wird hier hartverdrahtet # eingerechnet. Wenn man das nicht will, $dsl auf 0 setzen. my $dsl = 11.19; my $monat0 = $monat - $dsl; my $total; foreach (sort keys %gebuehr) { my $g = sprintf "%.2f", 1.16 * ($gebuehr{$_} + $monat0/3 + 4/21*$dsl); $total += $g; print "$_: $gebuehr{$_} + Grund + DSL + USt = $g ($name{$_})\n"; } { my $g = sprintf "%.2f", 1.16 * (3/7*$dsl); $total += $g; print "Mädels: DSL + USt = $g\n"; } print "Gesamt: $total\n";