[PERL]tableau de valeurs dans une variable

Résolu
Bonjour,

voici un bout de programme opérationnel qui me fournit un joli graph.

#!/usr/bin/perl -i.orig
use perlchartdir;

# The data for the line chart CONNEXIONS
my $data = [30, 28, 40, 55, 75, 68, 54, 60, 50, 62, 75, 65, 75, 91, 60, 55, 53, 35, 50, 66, 56, 48, 52, 65, 62];

# The labels for the line chart HEURES
my $labels = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"];

# Create a XYChart object of size 250 x 250 pixels
my $c = new XYChart(500, 500);

# Set the plotarea at (30, 20) and of size 200 x 200 pixels
$c->setPlotArea(30, 20, 450, 450);

# Add a line chart layer using the given data
$c->addLineLayer($data);

# Set the labels on the x axis.
$c->xAxis()->setLabels($labels);

# Display 1 out of 3 labels on the x-axis.
$c->xAxis()->setLabelStep(1);

# output the chart
$c->makeChart("simpleline.png")


Mais ce programme est "statique" dans le sens où il contient les valeurs des variables $data & $labels

j'aimerais plutôt qu'il aille les lire dans un fichier texte tout simple ..

Si vous avez une idée elle est la bienvenue ...
j'ai déjà fait un petit test :

#!/usr/bin/perl -i.orig
use perlchartdir;
use Shell qw(cat);

my $data=cat("data.txt");

...
..
.

# Add a line chart layer using the given data
$c->addLineLayer([$data]);

.
..
...


qui ne fonctionne ÉVIDEMENT pas ..

Merci

Vincent
Configuration: Windows XP
Firefox 3.0.3

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Re,

    alors essai
    my $data=[ split /,/,qx/cat data.txt/ ];
    --
    106485010510997108
    1. Modérateur
      Salut,

      Il faut que tu nous montre la structure de ton fichier text.
      A savoir que $date = [.....] veut dire qu'on affecte à la variable scalaire $date un tableau anonyme.
      Pareil pour $labels.

      1. salut !

        merci pour ta réponse

        mon fichier texte ne contiendra que les valeurs sous cette forme :

        30, 28, 40, 55, 75, 68, 54, 60, 50, 62, 75, 65, 75, 91, 60, 55, 53, 35, 50, 66, 56, 48, 52, 65, 62

        en gros sans les crochets quoi.

        merci :)
        1. Re,

          MERCi !!

          ca fonctionne très bien ! exactement ce que je voulais !

          juste une mini modif :

          my $data=[ split /,/`,qx/cat data.txt/ ]; => my $data=[ split /,/ ,qx/cat data.txt/ ];

          j'ai viré le <<'>> qui posait problème.

          Merci en tout cas, comme d'hab, de ta rapidité et tout et tout !
          1. Modérateur
            Re,

            j'ai viré le <<'>> qui posait problème.
            En fait c'est une erreur de frappe si tu veux.

            Pour capturer la sortie d'une commande on peut utiliser les apostrophes inverses `` ou l'opérateur qx//
            J'ai commencé avec ` ensuite j'ai changé d'avis pour la lisibilité ;-DD et j'ai oublié de l'effacer ;-)

            De rien ;-))

            P.S. Ben, j'ai eu encore la possibilité et j'ai corrigé. Merci.