Anzeige:
Ergebnis 1 bis 7 von 7

Thema: NOOP hat Problem mit Perl-Script

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38

    NOOP hat Problem mit Perl-Script

    Hallo.

    Ich habe mir das Buch "Jetzt lerne ich Perl" zugelgt.
    Die Investition hat sich gelohnt, so wie ich das beurteilen kann.
    Jetzt ist da ein schönes Script, das ich auch für Arbeit gebrauchen kann.
    Natürlich muss es etwas angepasst werden.
    Aber als ersten will ich es einmal abtippen und dann nach und nach an meine Bedürfnisse anpassen.
    Also einfach mal abgetippt und das sch***** Ding funtzt nicht.
    Lt. Buch kann ich keinen Fehler feststellen.
    Vielleicht kann einer von euch mir etwas unter die Arme greifen.
    Hier mal das Script:

    Code:
    #!/usr/bin/perl -w
    use strict;
    
    use Chart::Lines;
    
    my $diagr = Chart::Lines->new(400,1000);
    
    my @legende;
    my %farben;
    my $titel;
    
    # Titel
      chomp($titel = <>);
      $_ = <>; $_ = <>;
    
    # x-Achsenticks
      $_ = <>;
      chomp;
      my @achse = split(/\s*;\s*/);
      shift(@achse);
      $diagr->add_dataset(@achse);
    
    # Datensätze
      my $zaehler = 0;
      while (<>) {
        chomp;
        next if $_ eq '';
        my @felder = split(/\s*;\s*/);
        push(@legende, shift(@felder));
        $farben{"dataset$zaehler"} = [int(rand(255)),
                                      int(rand(255)),
                                      int(rand(255))];
        $diagr->add_dataset(@felder);
        $zaehler++;
        }
        
    $diagr->set('title' => $titel);
    $diagr->set('x_label' => "Zeit");
    $diagr->set('y_label' => "Auslastung in %");
    $diagr->set('colors' => \%farben);
    $diagr->set('legend_labels' => \@legende);
    $diagr->png("Auswertung.png");
    Und hier noch die Fehlermeldung:

    Code:
    netmaster@linux:~/bin/Perl-Scripte> ./auswertung.pl auswertung.txt
    Can't locate Chart/Lines.pm in @INC (@INC contains: /usr/lib/perl5/5.8.3/i586-linux-thread-multi /usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.3/i586-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl .) at ./auswertung.pl line 4.
    BEGIN failed--compilation aborted at ./auswertung.pl line 4.
    netmaster@linux:~/bin/Perl-Scripte>
    Danke schon mal im Voraus.
    Gruss
    Rene

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    er ist auf der Suche nach der Datei Chart/Lines.pm die du in Zeile 4 einbindest und findet die nicht. evtl musst du noch was nachinstallieren

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Installieren geht dann so:

    Code:
    perl -MCPAN -e 'install Chart::Lines;'

  4. #4
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Super, das hat ja wie am Schnürchen geklappt.
    Das Script funtzt.
    Was ich jetzt noch nicht hinbekomme sind 2 Sachen.
    Ich hätte gerne die x_label-Beschriftung vertikal.
    Und als 2. die Y-Beschriftung soll immer an 100% ausgerichtet sein.
    Ist das möglich?
    WEnn ja, wie muss ich das Script anpassen?
    Gruss
    Rene

  5. #5
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Hab in den weiten des WEB's alles gefunden was ich brauchte.
    Klappt alles.
    Nur eine kleiner Schönheitsfehler will ich noch ändern.
    So sieht mein Script jetzt aus:

    Code:
    #!/usr/bin/perl -w
    use strict;
    
    use Chart::Lines;
    
    my $diagr = Chart::Lines -> new(900,350);
    
    my @legende;
    my %farben;
    my $titel;
    
    # Titel
      chomp($titel = <> );
    # x-Achsenticks
      $_ = <>;
      chomp;
      my @achse = split(/\s*;\s*/);
      shift(@achse);
      $diagr->add_dataset(@achse);
    
    # Datensätze
      my $zaehler = 40;
      while (<>) {
        chomp;
        next if $_ eq '';
        my @felder = split(/\s*;\s*/);
        push(@legende, shift(@felder));
        $farben{"dataset$zaehler"} = [int(rand($zaehler)),
                                      int(rand($zaehler)),
                                      int(rand($zaehler))];
        $diagr->add_dataset(@felder);
        $zaehler++;
        }
    
    $diagr->set('title' => $titel);
    $diagr->set('x_label' => "Zeit");
    $diagr->set('y_label' => "Auslastung in %");
    $diagr->set('transparent' => 'true');
    $diagr->set('colors' => \%farben);
    $diagr->set('legend_labels' => \@legende);
    $diagr->set('y_ticks' => '10');
    $diagr->set('max_val' => "100");
    $diagr->set('skip_x_ticks' => 4);
    $diagr->png("Auswertung.png");
    Aufgerufen wird es mir "./auswertung.pl datei.txt
    Nun bräuchste ich das Script noch so, dass in der letzten Zeile,
    keine Name für das Bild angegeben wird, sondern der übergebene Name der Datei (datei.txt) sein, jedoch mit der Endung "png". (datei.png)

    Kann mir vielleicht jemand helfen und mir sagen, wie ich das realisieren kann?
    Danke im Voraus.

    Achso, ja, einen hab ich noch. Gibt es eine Möglichkeit, die Liniendicke im Chart zu ändern?
    Gruss
    Rene

  6. #6
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Ich toppe den Thread mal, da ich noch nicht ganz zufrieden mit meinem Script bin.
    Es funtzt soweit, wie ich es haben will.
    Eine Kleinigkeit stört mich jedoch nicht.
    Da es sich ja immer um %-Werte handelt, habe ich die y-Achse statisch auf 100 gesetzt.

    $diagr->set('max_val' => "100");

    Leider werden aber die Werte jetzt immer auf 100.000 gesetzt.
    Lasse ich die Zeile weg, dass wählt er selbst den höchsten Wert.
    Wenn es aber nur mal 50% sind, dann ist es nicht mehr so schön,
    da ich will dass die y-Achse sich immer auf 100 ausrichtet.
    Hat da vielleicht jemand eine Lösung für mich?
    Gruss
    Rene

  7. #7
    Registrierter Benutzer
    Registriert seit
    13.04.2002
    Ort
    Bad Camberg
    Beiträge
    38
    Zitat Zitat von fork
    Installieren geht dann so:

    Code:
    perl -MCPAN -e 'install Chart::Lines;'
    Ich spiele morgen Linux auf einem Offline-PC auf der Arbeit auf.
    Wie der Name schon sagt, habe ich dort keine Online Verbindung.
    Gibt es eine Möglichkeit, die Daten auch Offline einzuspielen?
    Ich würde mir die dann die Pakete zu Hause saugen und auf der Arbeit einspielen.
    Ich werde Suse 9.0 einspielen.
    vWäre gut, wenn mir da einer etwas dazu sagen kann.
    THX.
    Gruss
    Rene

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •