Term::ANSIColor hat zwei Interfaces. Einmal kannst du Konstanten Exportieren die dir die Farben setzen, und einmal hast du Funktionen zum setzen. Ich bevorzuge letzteres.
Du hast dann zwei Funktionen "color()" und "colored()".
color() gibt den ANSI Code für deine Farbe zurück. Wenn du diesen mittels print() ausgiebst dann ist deine Ausgabe
fest auf diese Farbe gesetzt. Wenn du irgendwann die Farbe wieder wechseln willst kannst du color() mit einer neuen Farbe aufrufen oder "print color('reset')" um deine Farbauswahl zu löschen.
colored() macht nur einen String farbig, ist also optimal wenn du nur teile farbig machen möchtest.
---
Ansonsten noch zu deinem Skript:
1) Du solltest dir von anfang an angewöhnen "use strict;" und "use warnings;" zu benutzen da es sehr viele Fehler abfängt.
2) Wahrscheinlich wirst du doch mindestens Debian Etch, oder neuer nutzen? Dann sollte dein System UTF-8 sein. Damit du mit
utf8 keine Probleme hast solltest du noch folgendes hinzufügen:
Die erste Zeile gibt an das der Sourcecode UTF-8 Codiert ist. Die zweite Zeile gibt an das alle I/O Sachen automatisch ein UTF-8 Layer nutzen. Und die dritte Zeile aktiviert dann auch auf STDIN, STDOUT, STDERR UTF-8 (Die letzte Zeile ist etwas "komplexer" aber das sollte für den anfang genügen).
3) Du solltest aussagekräftige Variablennamen verwenden.
---
Ich habe dir mal eine neue Version auf grundlage deines Codes geschrieben.
Code: Alles auswählen
#!/usr/bin/perl
# Core Modules
use strict;
use warnings;
use utf8;
use open ':utf8';
use open ':std';
use Term::ANSIColor;
my $text_color = 'yellow';
print "Wieviel Tage hat der Monat bis jetzt?\n";
chomp (my $tage = <STDIN>);
print "Wie ist der Stand Ihrer Haushaltsausgaben in diesem Monat?\n";
chomp (my $ausgaben = <STDIN>);
print "Wieviel Tage hat der gegenwärtige Monat insgesamt?\n";
chomp (my $tage_gesamt = <STDIN>);
my $durchschnitt_ausgaben = sprintf('%.2f', $ausgaben / $tage);
my $prognose_ausgabe = sprintf('%.2f', ($ausgaben / $tage) * $tage_gesamt);
# Farben hinzufügen
$durchschnitt_ausgaben = colored($durchschnitt_ausgaben, $text_color);
$prognose_ausgabe = colored($prognose_ausgabe, $text_color);
print
"Die durchschnittliche Ausgabe für einen Tag beträgt etwa: $durchschnitt_ausgaben €\n",
"Wenn das so weitergeht, werden Sie am Ende des Monats $prognose_ausgabe € ausgegeben haben.\n";
---
Eventuell ist es noch etwas zu hoch für dich aber den aktuellen Tag und anzahl der Tage im Monat kannst du gut mit dem Modul DateTime heraus bekommen.
Code: Alles auswählen
use DateTime;
my $today = DateTime->today;
my $tag = $today->day_of_month;
my $tage_gesamt = DateTime->last_day_of_month(
year => $today->year,
month => $today->month,
)->day_of_month;
print "Heute: $tag\n";
print "Gesamt: $tage_gesamt\n";