IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

[QUESTION] L'utilisation de Perl pour mon "projet"


Sujet :

Programmation et administration système Perl

  1. #21
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    La variable $number n'est apparemment pas initialisée, c'est sans doute assez facile à corriger, mais je peux pas dire grand chose de plus sans voir ton code.

  2. #22
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Hello,

    Je pense avoir corrigé le soucis.
    Mais maintenant, j'obtiens un résultat nul ...

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    use strict;
    use warnings;
     
    my %count;
    my $fichier = "SVTEST.txt";
    my $number=0.0;
    open my $FH, "<", $fichier or die "Ouverture impossible du fichier $fichier";
    <$FH> for 1..11;
     
    while (my $line = <$FH>) {
    	my ($name, $capacity) =  (split /:/, $line)[1, 7];
    	if ($name =~ /VMware/xmsi or $name =~ /SRV/) {
    		$count{vm} += $number;
    	} elsif ($name =~ /OR/) {
    		$count{oracle} += $number;
    	} elsif ($name =~ /sql/) {
    		$count{sql} += $number;
    	}
    }
    print "Capacity for $_ = $count{$_} TB\n" for keys %count;
    Voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Capacity for vm = 0 TB
    Capacity for oracle = 0 TB

  3. #23
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    tu as oublié quelques lignes de code, en particulier celle où $number est initialisé à partir de $capacity et recalculé en TB si on a des GB.

    Du coup, $number est toujours à 0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	my ($name, $capacity) =  (split /:/, $line)[1, 7];
    	my ($number,$type) = ($capacity =~ m{\A \s* ([\d.]+) \s* ([A-Z]+) \s* \z}xms);
    	next unless defined $number;
    	# print "$number $type \n"; #Pour test
    	$number = $number / 1000.0 if $type eq 'GB'; #Convertis en TB si le type est GB

  4. #24
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Bonjour Lolo,

    Désolé poru autant de temps sans retour de ma part mais j'ai du mettre ce projet de côté pour d'autre projet plus important!
    Je ne comprends pas trop où dois-je ajouter l'information ? J'ai effectivement maintenant un output avec des chiffres, mais je penses que c'est faussé niveau résultat (petit édit, je vais vérifier manuellement, mais ça à l'air d'aller en fait).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    use strict;
    use warnings;
     
    my %count;
    my $fichier = "SVTEST.txt";
    my $number=0;
    open my $FH, "<", $fichier or die "Ouverture impossible du fichier $fichier";
    <$FH> for 1..11;
     
    while (my $line = <$FH>) {
    	my ($name, $capacity) =  (split /:/, $line)[1, 7];
     
    	my ($number,$type) = ($capacity =~ m{\A \s* ([\d.]+) \s* ([A-Z]+) \s* \z}xms);
    	next unless defined $number;
    	# print "$number $type \n"; #Pour test
    	$number = $number / 1000.0 if $type eq 'GB'; #Convertis en TB si le type est GB
     
    	if ($name =~ /VMware/xmsi or $name =~ /SRV/xmsi) {
    		$count{vm} += $number;
    	} elsif ($name =~ /OR/xmsi) {
    		$count{oracle} += $number;
    	} elsif ($name =~ /SQL/xmsi) {
    		$count{sql} += $number;
    	}
    }
    print "Capacity for $_ = $count{$_} TB\n" for keys %count;
    Petite question, comment dois-je faire, si par exemple, il existe une lignequi ne correspond à rien (donc dans ce cas ni VMware, SRV, OR, SQL) et créer une catégorie "Other" ?

    Je vais avoir un petit cours personnalisé demain, donc je serai moins idiot sur Perl
    Mais un peu d'aide n'est pas contre!

  5. #25
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je n'ai pas relu tout les détails, mais sans doute quelque chose dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if ($name =~ /VMware/xmsi or $name =~ /SRV/xmsi) {
    		$count{vm} += $number;
    	} elsif ($name =~ /OR/xmsi) {
    		$count{oracle} += $number;
    	} elsif ($name =~ /SQL/xmsi) {
    		$count{sql} += $number;
    	} else {
    		$count{other} += $number;
    	}
    }

  6. #26
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Hello Lolo,

    Merci mais entre temps j'ai trouvé !
    Désolé de poser des questions idiotes

    Petite question, comment je peux faire un affichage par ordre alphabétique sur le résultat que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Capacity for $_ = $count{$_} TB\n" for keys %count;
    ?
    Je pense que c'est la commande "Sort" mais je ne vois pas où la placer ?

  7. #27
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Original1992 Voir le message
    Hello Lolo,

    Merci mais entre temps j'ai trouvé !
    Tant mieux.
    Citation Envoyé par Original1992 Voir le message
    Petite question, comment je peux faire un affichage par ordre alphabétique sur le résultat que j'ai (...) ?
    Je pense que c'est la commande "Sort" mais je ne vois pas où la placer ?
    C'est très simple. Je te laisse chercher, peut-être que tu vas trouver aussi, non?

    Bon, je plaisantais. Plus sérieusement, tu veux trier selon les clefs du hachage? ou autre chose?
    Si c'est sur les clefs, ça peut être aussi simple que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Capacity for $_ = $count{$_} TB\n" for sort keys %count;

  8. #28
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    C'est exactement ça merci !
    J'avais trouvé "sort" mais je ne me souviens plus où je l'avais placé pour que cela ne fonctionne pas ... surement avant %count et non avant Keys ... Ce qui est idiot une fois qu'on réfléchis au fonctionnement de "Keys" ...

  9. #29
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Lolo,

    Je me demandais si il était possible de changer la façon dont on commence la lecture du fichier ?
    Effectivement, pour le moment on lui dit de commencer vraiment à 11.

    Pour le moment, les fichiers sont toujours composé de la même façon, mais si jour une ligne de plus se rajoute, je recevrai un message d'erreur.
    Existe t-'il un moyen, de dire par exemple, si tu vois "id:name:IO_group.........." commence à lire ?

    Petit rappel du contenu du fichier que je traite :
    Command to execute : svcinfo lsmdiskgrp -delim : :
    --------------------------------------------------
    id:name:status:mdisk_count:vdisk_count:capacity:extent_size:free_capacity:virtual_capacity:used_capacity:real_capacity:overallocation:warning:easy_tier:easy_tier_status:compression_active:compression_virtual_capacity:compression_compressed_capacity:compression_uncompressed_capacity:parent_mdisk_grp_id:parent_mdisk_grp_name:child_mdisk_grp_count:child_mdisk_grp_capacity:type:encrypt:owner_type:site_id:site_name
    0:NBB2_CORP_DS8K8:online:38:297:124.98TB:1024:7.54TB:117.44TB:117.43TB:117.43TB:93:90:on:active:yes:5.00GB:3.28MB:0.00MB:0:NBB2_CORP_DS8K8:0:0.00MB:parent:no:none::
    1:MigrationPool_8192:online:0:0:0:1024:0:0.00MB:0.00MB:0.00MB:0:80:auto:balanced:no:0.00MB:0.00MB:0.00MB:1:MigrationPool_8192:0:0.00MB:parent::none::


    RC = 0

    Command to execute : svcinfo lsvdisk -delim : :
    -----------------------------------------------
    id:name:IO_group_id:IO_group_name:status:mdisk_grp_id:mdisk_grp_name:capacity:type:FC_id:FC_name:RC_id:RC_name:vdisk_UID:fc_map_count:copy_count:fast_write_state:se_copy_count:RC_change:compressed_copy_count:parent_mdisk_grp_id:parent_mdisk_grp_name:formatting:encrypt:volume_id:volume_name:function
    0:V_SVCC_NBB2_SCNAMM21_22_PROA1M_OR01_0398_NM:1:IO_GRP1:online:0:NBB2_CORP_DS8K8:75.00GB:striped:::::600507680181865A7800000000000398:0:1:not_empty:0:no:0:0:NBB2_CORP_DS8K8:no:no:0:V_SVCC_NBB2_SCNAMM21_22_PROA1M_OR01_0398_NM:
    La 11eme ligne étant celle qui commence par "id:name:...."

    Merci !

  10. #30
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    il y a de nombreuses façons de faire cela. En voici une (qui devrait marcher, mais non testée sur mon téléphone):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    my $saute = 1;
    while (my $line = <$FH>) {
        $saute = 0 if $line =~ /^id:name:IO_group_id:/;
        next if $saute;
        # suite du traitement de la $ligne
        #...

  11. #31
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Salut Lolo,

    Merci, ça fonctionne parfaitement.

    J'essaye de comprendre ton code, corrige moi avec plaisir stp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $saut = 1;
    while (my $line = <$FH>) {
    	$saut = 0 if $line =~ /^id:name:IO_group_id:/;
    	next if $saut;
    Tu déclares $saut à 1
    Il parcourt le fichier par ligne
    $saut devient 0 si la ligne commence par "id:name:IO_group_id:"
    Il skip la ligne tant que $saut = 1, dés qu'il devient 0, il commence le trainement des lignes

    J'ai bon ? Ou je suis idiot ?

  12. #32
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Oui, tu as parfaitement compris. Implicitement une valeur 1 est vraie et une valeur 0 est fausse.

  13. #33
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Salut Lolo

    J'ai une question plutôt de réflexion, peut-être pourras-tu m'aider ...

    J'effectue ce test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    elsif ($name =~ /OR/xmsi) {
    			$count{Oracle} += $number;
    Pour récupérer les Oracles. J'avais utilisé au début "OR" car cela est présent dans les lignes Oracle.
    Par contre j'ai un autre soucis, des fois le mot "CORP" apparaît et du coup, cela les comptes aussi dans les Oracles ..

    As-tu une idée ?
    Voici des exemples de ligne :
    0:V_SVCC_NBB2_SCNAMM21_22_PROA1M_OR01_0398_NM:1:IO_GRP1:online:0:NBB2_CORP_DS8K8:75.00GB:striped:::::600507680181865A7800000000000398:0:1:not_empty:00:0:NBB2_CORP_DS8K8no:0:V_SVCC_NBB2_SCNAMM21_22_PROA1M_OR01_0398_NM:
    1:V_SVCC_NBB2_SWPNCNDATP01_G_0001_AU:1:IO_GRP1:online:4:NBB2_CORP_NRLSAS_STW22:2.00TB:striped:::1:rcrel0:600507680181865A7800000000000399:0:1:empty:00:4:NBB2_CORP_NRLSAS_STW22no:1:V_SVCC_NBB2_SWPNCNDATP01_G_0001_AU:aux

  14. #34
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    dans ce cas, il faut rechercher un motif un peu plus discriminant que simplement /OR/. Je ne connais pas tes données en entrée, mais, d'après ce que j'en vois, il est possible que la recherche de /_OR/ ou /OR\d/ (OR suivi d'au moins un chiffre) puisse suffire. A toi de voir selon ce qui permet d'identifier dans ton fichier en entrée une chaîne correspondant à Oracle et pas à autre chose.

  15. #35
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Salut Lolo,

    Merci pour ton analyse.
    J'ai repris le /OR\d/ et j'ai retravaillé un peu tout ça.

    J'ai une petite question, j'aimerai travailler un peu avec Excel avec mes résultats obtenu.
    J'ai trouvé sur internet ceci pour travailler avec un Excel :
    J'aimerai dans un premier temps insérer les informations dans un Excel et puis faire du traitement avec (exemple : générer un pourcentage, générer un graph, etc..) penses-tu que cela est possible ?
    Avec le Perl de base, je ne souhaite pas utiliser de module supplémentaire.

    Je n'arrête pas mes recherches, mais si je ne trouve pas tu pourras peut-être m'aiguiller

    Edit : Bon générer des pourcentages, etc ne devrait pas être trop difficile, j'ai vu qu'on pouvait réaliser des formules depuis Perl. J'ai également trouver comment écrire une variable dans une case, ne me reste plus qu'a faire tout ça automatiquement au lieu d'écrire à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $worksheet->write("A1","Capacity for SQL : $count{SQL} TB");
    Edit 2 : En gros j'aimerai arriver à +/- ce résultat je pense, mais sans devoir taper (enfin, peut-être que c'est mieux que je tape en fait, ça m'évite de chercher et ça fonctionne ..., qu'en penses-tu ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $worksheet->write("A1","Capacity for SQL :");
    $worksheet->write("A2","$count{SQL} TB");
     
    $worksheet->write("B1","Capacity for Oracle :");
    $worksheet->write("B2","$count{Oracle} TB");
    Merci

  16. #36
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Original1992 Voir le message
    J'ai une petite question, j'aimerai travailler un peu avec Excel avec mes résultats obtenu.
    J'ai trouvé sur internet ceci pour travailler avec un Excel :
    J'aimerai dans un premier temps insérer les informations dans un Excel et puis faire du traitement avec (exemple : générer un pourcentage, générer un graph, etc..) penses-tu que cela est possible ?
    Avec le Perl de base, je ne souhaite pas utiliser de module supplémentaire.
    Ben ce n'est pas trop possible (ou, du moins, c'est vraiment très difficile) sans utiliser de module supplémentaire, je pense qu'il faut vraiment passer par un module externe.

    La syntaxe que tu cites:
    provient manifestement d'un module Perl pour écrire des fichiers Excel, probablement celui-ci: http://search.cpan.org/~jmcnamara/Sp.../WriteExcel.pm. Voici des exemples tirés de la doc de ce module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        # Write a formatted and unformatted string, row and column notation.
        $col = $row = 0;
        $worksheet->write($row, $col, 'Hi Excel!', $format);
        $worksheet->write(1,    $col, 'Hi Excel!');
     
        # Write a number and a formula using A1 notation
        $worksheet->write('A3', 1.2345);
        $worksheet->write('A4', '=SIN(PI()/4)');
    En revanche, si le but est seulement de calculer des pourcentages, tu peux très bien le faire en Perl pur, sans module externe et sans utiliser Excel.

    A vrai dire, il existe bien une solution (très limitée) pour créer un fichier Excel sans module: créer un fichier de type CSV (comma separated values), dans lequel les champs de la future feuille sont séparés par des virgules. Si l'extension du fichier est ".cvs", alors Excel pourra l'ouvrir et le convertir en fichier Excel. Mais je ne recommande vraiment pas cette solution, car elle implique une conversion manuelle en utilisant Excel, et il n'est pas évident que les formules fonctionnent.

  17. #37
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Hello,

    En fait quand je disais "ne pas utiliser de module", je parlais d'utiliser uniquement ceux installé dans le package Perl de base.
    En fait le but était plutôt d'insérer les valeurs dans un fichier Excel, en sortir deux trois données et si possible créer un graphique avec

  18. #38
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Pour le moment ça ressemble à ça ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    use Excel::Writer::XLSX;
    use Spreadsheet::WriteExcel;
     
    my $workbook = Excel::Writer::XLSX->new('test.xlsx') ;
    my $worksheet = $workbook->add_worksheet('Data');
    my $chart = $workbook->add_chart(type=>'column');
    my $bold = $workbook->add_format(bold => 1); #For titles
     
    $chart->add_series(
    	name => '=Data!$A$2',
    	values => '=Data!$B$2');
     
    $chart->add_series(
    	name => '=Data!$A$3',
    	values => '=Data!$B$3');
     
    $chart->set_title(name => 'SVC');
    $chart->set_x_axis(name => 'System');
    $chart->set_y_axis(name => 'Capacity (Terabytes)');
     
    #For Titles of EXCEL
    my $format = $workbook->add_format(
                                            border  => 6,
                                            valign  => 'vcenter',
                                            align   => 'center',
    										size	=> 18,
    										bold	=> 1,
                                          );
    $worksheet->merge_range('A1:F1', 'Capacity by types (Terabytes)', $format);
     
    $worksheet->write("A2","SQL", $bold);
    $worksheet->write("B2","$count{SQL}");
     
    $worksheet->write("A3","Oracle", $bold);
    $worksheet->write("B3","$count{Oracle}");
     
    $workbook->close;
    Pour obtenir ça :
    Nom : Perl1.png
Affichages : 132
Taille : 2,8 Ko
    Nom : perl2.png
Affichages : 162
Taille : 11,6 Ko
    Seul défaut je dois tout taper à la main. As-tu une meilleure façon de faire ?

  19. #39
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Que veux-tu dire pas "tout taper à la main"? Ça paraît fait automatiquement dans le module.

  20. #40
    Membre habitué
    Homme Profil pro
    Informatique
    Inscrit en
    Mars 2013
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 203
    Points : 164
    Points
    164
    Par défaut
    Désolé, j'ai un peu de mal à décrire ce que je souhaite.

    Mais en gros, c'est éviter d'écrire ceci dans le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $chart->add_series(
    	name => '=Data!$A$2',
    	values => '=Data!$B$2');
     
    $worksheet->write("A2","SQL", $bold);
    $worksheet->write("B2","$count{SQL}");
    Voir si il n'est pas possible de une sorte de boucle "automatique", je ne sais pas si tu vois ce que je veux dire ?

    Comme pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "Capacity for $_ = $count{$_} TB\n" for sort keys %count;

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Quelle est l'utilité de Perl pour mon projet ?
    Par cj_prog dans le forum Langage
    Réponses: 1
    Dernier message: 04/05/2011, 14h41
  2. Erreur à l'utilisation de PERL pour Solaris (perl: warning: Setting locale failed.)
    Par arnaudperfect dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 13/10/2010, 17h08
  3. Réponses: 6
    Dernier message: 26/01/2008, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo