use strict;
use warnings;
use Chart::Lines;
use Chart::Points;
use Chart::Bars;

my (@achse,@legende,@felder);
my ($datei,$diagr,$titel,$typ,
    $xachse,$yachse,$grid,$maxy,$miny);

# 1. Zeile: Name der Ausgabedatei
chomp($datei = <>);

# 2. Zeile: Titel;Typ [L,P,B];Gridlines
chomp($titel = <>);
($titel,$typ,$grid) = split(/\s*;\s*/,$titel);
$typ = uc($typ);                         # in Grossbuchstaben umwandeln
$typ = 'L' unless(defined($typ));        # Default-Typ einstellen

# Hier sieht man gut, wie sich die verschiedenen
# Chart-Module einbinden lassen
if ($typ eq 'P')
  { $diagr = Chart::Points -> new(600,350); }
elsif ($typ eq 'B')
  { $diagr = Chart::Bars -> new(600,350); }
else # 'L'
  { $diagr = Chart::Lines -> new(600,350); }

# 3. Zeile: Y-Achsen-Legende, ggf. min. und max. Y-Wert
chomp($yachse = <>);
($yachse,$miny,$maxy) = split(/\s*;\s*/,$yachse);

# 4. Zeile: X-Achsen-Legende
chomp($xachse = <>);

# 5. Zeile: n X-Achsenticks
chomp($_ = <>);
@achse = split(/\s*;\s*/);
shift(@achse); # 1. Feld = Dummy
$diagr->add_dataset(@achse);

# ab 6. Zeile: jeweils n Datensaetze pro Zeile, erster
# Datenwert = Bezeichnung
while (<>)
  {
  chomp;
  @felder = split(/\s*;\s*/);
  push(@legende, shift(@felder)); # 1. Wert
  $diagr->add_dataset(@felder);
  }

# Jetzt sind alle Daten eingelesen, machen wir uns ans Werk
$diagr->set('title' => $titel);
$diagr->set('x_label' => $xachse);
$diagr->set('y_label' => $yachse);
$diagr->set('transparent' => 'true');
$diagr->set('legend_labels' => \@legende);
$diagr->set('y_ticks' => '10');
$diagr->set('grid_lines' => 'true') if (uc($grid) eq 'Y');
$diagr->set('min_val' => $miny) if (defined($miny));
$diagr->set('max_val' => $maxy) if (defined($maxy));

# schliesslich eine Datei mit dem Ganzen erzeugen
$diagr->png($datei . '.png');