David: PERL Prämienberechnung

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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.

            1. 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

              1. 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

                --
                X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. 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

                  1. 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

                    --
                    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. 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

              2. 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

                --
                Woran ich arbeite:
                X-Torah
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                1. Erstmal Danke an ALLE....

                  @Beat das ist ein sehr Guter Ansatz, das werde ich noch etwas verfeiner und Vollenden...THX :=)

                  mfg David

      2. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          die Sprache heißt Perl, nicht PERL. Es ist kein Akronym.

          P ractical
          E xtraction and
          R eport
          L anguage

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. 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

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. 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.

              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;

              --
              Woran ich arbeite:
              X-Torah
              ><o(((°>           ><o(((°>
                 <°)))o><                     ><o(((°>o
              1. 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

                --
                <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
  2. 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