PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NOOP hat Problem mit Perl-Script



netmaster
21-07-2004, 15:31
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:


#!/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:


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.

peschmae
21-07-2004, 16:57
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ä

fork
21-07-2004, 17:06
Installieren geht dann so:


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

netmaster
21-07-2004, 18:53
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?

netmaster
22-07-2004, 22:21
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:


#!/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?

netmaster
04-09-2004, 08:46
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?

netmaster
06-09-2004, 18:28
Installieren geht dann so:


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.