[PERL]tableau de valeurs dans une variable

[Résolu/Fermé]
Signaler
Messages postés
30
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 décembre 2011
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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

5 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 560
Re,

alors essai
my $data=[ split /,/,qx/cat data.txt/ ];
--
106485010510997108
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 560
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.


Messages postés
30
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 décembre 2011

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 :)
Messages postés
30
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
9 décembre 2011

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 !
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 560
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.