PERL Prämienberechnung
David
- perl
HY Liebe Leute...
Ich brauche unbedingt eure Hilfe in Sachen PERL.
Vorab: Benutze MAC OS X und als PERL Interpreter Komodo.
Ich habe eine Aufgabenstellung bekommen die folgendermaßen aussieht:
@Erstelle eine CSV-Datei mit Name,Personalnummer,Einstellungsdatum.
(das ist kein problem :=) )
In PERL muss jetzt das hier berechnet werden:
Betriebszugehörigkeits-Dauer >5Jahre 400,00€ plus 10,00€ pro Jahr
<5 bis >10 Jahre 600,00 plus 15,00€ pro Jahr
usw.
Da liegt mein Problem.....
Desweiteren muss ich ja das Aktuelle Datum mit dem Einstellungsdatum der Mitarbeiter Vergleichen so das PERL Automatisch die Prämienzahlung errechnet....
Ach ja und das Einstellungsdatum ist ja in der CSV Datei die in PERL eingebunden werden muss...
Ich denke das könnte man mit einem Handle machen....
Hoffe Ihr könnt mir Helfen....
Ich bedanke mich in voraus bei euch....
mfg David
Hallo,
@Erstelle eine CSV-Datei mit Name,Personalnummer,Einstellungsdatum.
(das ist kein problem :=) )
wenn es kein Problem sein sollte, eine CSV-Datei zu erstellen, dann sollte es auch kein allzugroßes Problem sein, eine CSV-Datei einzulesen. (Ich vermute Zeilenumbrüche und Anführungszeichen innerhalb der Werte sind kein Thema :-)).
In PERL muss jetzt das hier berechnet werden:
Betriebszugehörigkeits-Dauer >5Jahre 400,00€ plus 10,00€ pro Jahr
ich vermute, Du meinst bei einer Betriebszugehörigkeit von unter fünf Jahrenn
<5 bis >10 Jahre 600,00 plus 15,00€ pro Jahr
das sollte wohl heißen: bei einer Betriebszugehörigkeit von fünf bis 10 Jahren (10 nicht eingeschlossen)
Da liegt mein Problem.....
wo?
Desweiteren muss ich ja das Aktuelle Datum mit dem Einstellungsdatum der Mitarbeiter Vergleichen so das PERL Automatisch die Prämienzahlung errechnet....
Kannst Du in einer Schleife eine Datei auslesen?
Kannst Du auf die Daten zugreifen, die Du aus einer Datei gelesen hast?
Kennst Du Funktionen, die mit Datumsangaben zu tun haben?
Kennst Du Operatoren, um Werte zu addieren, subtrahieren oder gar multiplizieren?
Kennst Du Vergleichsoperatoren?
Hast Du schon einmal etwas von der if-Anweisung gehört?
Weißt Du, wie man etwas ausgibt?
Wenn Du jede Frage mit Ja beantworten kannst, dann hast Du das ganze Rüstzeug zusammen, um die Aufgabe lösen zu können. Wenn Du immer noch ein Verständnisproblem hast, gib' bitte genau an, *was* Du nicht verstehst, *woran* Du hängengeblieben bist, *was* Du versucht hast.
Freundliche Grüße
Vinzenz
Na ja ich Lerne PERL in der Schule, bloß ich kann nicht alles sonst würde ich hier nicht Anfragen oder ??? Wenn ja alles mit Ja beantworten kann, brauch ich nicht hier Schreiben :=) !!!
Leider Hilft mir dein Post nicht weiter... aber trotzdem Danke für deine Mühen....
Mfg David
Hallo,
Na ja ich Lerne PERL in der Schule,
woher soll ich das wissen?
bloß ich kann nicht alles sonst würde ich hier nicht Anfragen oder ??? Wenn ja alles mit Ja beantworten kann, brauch ich nicht hier Schreiben :=) !!!
Könntest Du bitte angeben, welche meiner Fragen Du nicht mit Ja beantworten kannst? Deswegen habe ich sie doch gestellt, damit ich mir eine Vorstellung machen kann, was Du bereits kannst und was nicht.
Leider Hilft mir dein Post nicht weiter...
Ich habe Dir mit meinen Fragen mitgeteilt, welche Teilaufgaben zu lösen sind und welche Kenntnisse erforderlich sind. Das hilft Dir nicht weiter? Was denn sonst?
Wo stehst Du?
Was hast Du versucht?
Wo bist Du hängengeblieben?
Freundliche Grüße
Vinzenz
HY.
Also ich kann IF ELSIF Until do usw.... kenn ich...
Hab schon ein PAP gemacht...
Ich hänge noch am Anfang des Programms, denn ich habe das Problem mit dem DATUM....
Ich muss eine CSV datei mit dem Inhalt des Einstellungsdatum der Mitarbeiter in Perl einbinden und das dann mit dem Datum der Gegenwart vergleichen bzw. errechnen wie lange der Mitarbeiter schon im Betrieb ist, um dann die Prämien zuermitteln.
Hier die genaue Aufgabe:
Zum 30jährigen Bestehen, will die Firma XXX an alle Mitarbeiter eine Prämie zahlen, die nach der Betriebszugehörigkeits-Dauer gestaffelt ist.
unter 5 jahren : 300,00 plus 10,00 pro jahr
von fünf bis zehn jahren 400,00 plus 15,00 pro jahr usw...
Die Namen der Mitarbeiter, ihre Personalnummer und ihr Einstelldatum stehen in einer CSV Textdatei.
Das Programm soll eine Liste mit den Mitarbeitern und den zu zahlenden Betrag in eine CSVDatei schreiben.
SO wie gesagt, mein Problem ist das zuberechnen der Betriebszugehörigkeit und der Prämie und da Denke ich mir mal spielt das Datum eine GROßE ROLLE...
Ich bedanke mich für deine Mühen.....Vinzenz
Mfg David
Ich muss eine CSV datei mit dem Inhalt des Einstellungsdatum der Mitarbeiter in Perl einbinden und das dann mit dem Datum der Gegenwart vergleichen bzw. errechnen wie lange der Mitarbeiter schon im Betrieb ist, um dann die Prämien zuermitteln.
Könntest du das auch präzesieren? Bzw. wo genau das Problem ist. Wenn du nach Date beim CPAN suchst findest du fast 4000 Ergebnise
http://search.cpan.org/search?query=date&mode=all, da sollte was passendes dabei sein um das zu berechnen.
Struppi.
HY
Problem :
Ich muss aus der CSV Datei (wo das Einstellungsdatum steht der Mitarbeiter) mit dem Aktuellen Datum bzw. immer das Datum der gegenwart vergleichen und das als Ganze Jahre Ausgeben....
zb. Ein Mitarbeiter Arbeitet seit dem 01.04.2001 in der Firma.
Perl soll jetzt das Datum Vergleichen mit dem heutigen Datum und dann mir die Differenz Ausgeben 7 Jahre.
Wenn das geschafft ist soll Perl die Prämie errechnen...
Ich bin nicht so Gut in PERL, mir würde ne Synax sehr weiter Helfen.
@Struppi DANKE, habe viel gelesen doch zu mein Problem finde ich nichts...
THX an euch...
Mfg David
Hi,
Problem :
Du beschreibst ein Ziel. Wie Dein Problem lautet, wissen wir immer noch nicht.
Ich bin nicht so Gut in PERL, mir würde ne Synax sehr weiter Helfen.
Abgesehen davon, dass fertige Lösungen Dir schaden: Deine Fragestellung würde in dieser Richtung nur eines erlauben, nämlich ein komplettes Script von Anfang bis Ende. Das ist erstens Auftragsarbeit (und Du hast kein Angebot bezüglich der Bezahlung gemacht), und zweitens nicht im Sinne einer Schulaufgabe.
Beschreibe also, welche *Details* der Aufgabe Dir Schwierigkeiten machen. *Nur* bei diesen helfen wir Dir, dass Du selbst (englisch: SELF) die Lösung finden kannst.
Cheatah
HY.
Das Problem hat sich erledigt.
Habs nun hin bekommen... JUHU...
@Cheatah - Sicher ist das eine Schulaufgabe... Perl Abschlussarbeit. Jedoch hatten wir nen Crash Kurs :=)
Trotzdem Vielen DANK an ALLE
mfg David
Hi,
@Cheatah - Sicher ist das eine Schulaufgabe... Perl Abschlussarbeit. Jedoch hatten wir nen Crash Kurs :=)
Crash-Kurs? Dann bist Du jetzt also MCSE?
Cheatah, SCNR
LOL neeee....
Mache ne Ausbildung Verkürzt 2 Jahre (IT-SYSTEM-ELEKTRONIKER)...
meine Stärken liegen wo anders...
Naja PERL ist so ne Sache.. in VB zb. hab ich keine Probs....obwohl eigentlich fast die selbe Syntax ist.... :=)
....
mfg David
Ich muss aus der CSV Datei (wo das Einstellungsdatum steht der Mitarbeiter) mit dem Aktuellen Datum bzw. immer das Datum der gegenwart vergleichen und das als Ganze Jahre Ausgeben....
zb. Ein Mitarbeiter Arbeitet seit dem 01.04.2001 in der Firma.
Perl soll jetzt das Datum Vergleichen mit dem heutigen Datum und dann mir die Differenz Ausgeben 7 Jahre.
very dirty und ungetestet...
Vorbereitung
Daten umwandeln
29.02.2008 -> 20080229
dd.mm.yyyy -> yyyymmdd
my @prämien = (300,310,320,330);
# der Array lässt sich in einer Schleife erstellen.
# %Personal als Hash enthalte alle Daten.
my $jub = 20080229; #dies sein das fiktive Jubiläumsdatum.
foreach (keys %personal) {
# hier kannst du die dd.mm.yyyy -> yyyymmdd pro Angest. integrieren
# das lässt sich mit einer RE einfach realisieren.
# ...
my $jub2 = $jub;
$Personal{$_}{vergütungsjahre} = 0;
while( $jub2 - 10000 >= $Personal{$_}{angestellt_am} ){
$Personal{$_}{vergütungsjahre}++;
$jub2 -= 10000;
}
# hier kannst du gleich die Prämie ausrechnen.
$Personal{$_}{jub_prämie} = $prämie[ $Personal{$_}{vergütungsjahre} ];
}
Erklärung:
Solange ich das jubiläum um ein jahr vorverschieben kann und dabei
dieses Datum immer noch grösser (od. gleich) als das Anstellungsdatum ist, inkrementiere ich die Vergütungsjahre um 1.
Ich zähle also nur ganze Jahre, ohne aufzurunden.
mfg Beat
Erstmal Danke an ALLE....
@Beat das ist ein sehr Guter Ansatz, das werde ich noch etwas verfeiner und Vollenden...THX :=)
mfg David
Hi,
Na ja ich Lerne PERL in der Schule,
die Sprache heißt Perl, nicht PERL. Es ist kein Akronym. Siehe auch http://www.perl.org/about/style-guide.html, wo diese Frage - nicht behandelt wird, weil die übliche falsche Schreibweise "perl" lautet.
bloß ich kann nicht alles
Bisher machst Du den Eindruck, als könntest Du alles nicht. Das ist ein Unterschied, der das Zünglein zwischen "wir können Dir helfen" und "Dein Lehrer kann Dir helfen" ist.
Leider Hilft mir dein Post nicht weiter...
Deine Frage hilft uns auch nicht weiter, insofern ist das ja in Ordnung ...
Cheatah
Hi,
die Sprache heißt Perl, nicht PERL. Es ist kein Akronym.
P ractical
E xtraction and
R eport
L anguage
cu,
Andreas
Hi,
die Sprache heißt Perl, nicht PERL. Es ist kein Akronym.
P ractical
E xtraction and
R eport
L anguage
ein verbreiteter Irrtum, vergleiche http://en.wikipedia.org/wiki/List_of_computer_term_etymologies#P.
Cheatah
die Sprache heißt Perl, nicht PERL. Es ist kein Akronym.
P ractical
E xtraction and
R eport
L anguageein verbreiteter Irrtum, vergleiche http://en.wikipedia.org/wiki/List_of_computer_term_etymologies#P.
Larry Wall neigt zur Mystifizierung. Die Anfänge aller Dinge sind meistens spontan und oft wenig bewusst. Plötzlich steht etwas da, was einer Erklärung bedarf.
Von PEARL nach PERL?
P ractical
E xtraction
a nd
R eport
L anguage
So what?
mfg Beat;
Yerf!
Von PEARL nach PERL?
Ganz einfach: PEARL gab es schon ;-)
P Process and
E Experiment
A Automation
R Realtime
L Language
So what?
Exakt
Gruß,
Harlequin
Ich brauche unbedingt eure Hilfe in Sachen PERL.
Hallo David:
Ich gliedere dein Problem wie folgt:
1: Auslesen der firmendaten-CSV
Lies dir das Beispiel <http://de.selfhtml.org/perl/funktionen/einausgabe.htm#open@title=Datei öffnen> durch.
Nun hast du die Firmenadten in einem Array.
2: Das Array in Zeilen zerlegen:
Sie selbiges Beispiel foreach(@Zeilen) {
3: Die einzelnen Zeilen nach Werten zerlegen um an das Datum ranzukonnem:
Die Funktionen dazu findest du http://de.selfhtml.org/perl/funktionen/zeichenketten.htm@title=hier.. z.b. substr
, wenn du weißt wo das Datum zu finden ist oder split
Nun hast du das Einstellungsdatum.
4: Das heutige Datum ermitteln:
Wie das geht steht http://de.selfhtml.org/perl/funktionen/datumzeit.htm@title=hier. Und dort findest du auch Infos darüber wie man mit Datum und Uhrzeit rechnet.
5: die Provisionsrechnung als Solches sollte kein Problem sein.
6: die provisions-CSV schreiben.
Alles was Du dafür brachst hast Du schon unter Punkt 1 gelernt.
Viel Vergnügen
Karl