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

Langage Perl Discussion :

Comparaison de tableaux (PERL + MYSQL + CISCO)


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Comparaison de tableaux (PERL + MYSQL + CISCO)
    Bonsoir,
    1 - j'ai deux tableaux (@t1 et @t2) avec des noms et je souhaite supprimer du tableau 2, les mêmes noms présents dans le tableau 1.
    2 - Je souhaite représenter topologiquement les objets d'une base de données MYSQL, avec quel langage de programmation devrais-je faire ça ?
    Merci

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Comparer deux tableaux
    Ca y est, j'ai trouvé. Merci. Sinon pour ma deuxième question, quelqu'un peut m'aiguiller sur le sujet ?

  3. #3
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Bonsoir. Une fois la question résolue, ce peut être une bonne idée de poster la solution pour ceux qui feraient des recherches sur le forum sur le même problème. Et aussi, qui sait, pour un retour sur la méthode employée.

    Enfin, je dis cela comme ça, bien sûr. Cela n'engage que moi.

    Sinon, voilà une solution possible (le tableau associatif s'impose à mon avis).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/perl -w
    use strict;
     
    my @t1 = qw (je tu il nous vous ils);
    my @t2 = qw (moi toi lui nous vous eux);
     
    my %h = map { $_ => 1} @t1;
    @t2 = grep { not $h{$_} } @t2;
     
    #print join " ", @t2, "\n";
    Pour ta deuxième question, qu'entends-tu par représenter topologiquement ? Veux-tu représenter graphiquement des relations de proximité (sémantiques ou autres) ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Comparaison de tableaux (perl + MYSQL + CISCO)
    Bonjour, désolé, tu as raison.

    En fait mon boulot c'était d'insérer des équipements (en tenant compte du site d'affectation, de la zone d'appartenance du routeur CISCO) dans une bases de données MYSQL. Avant l'insertion il fallait s'assurer que les équipements n'étaient pas déjà présents dans la BD.
    1 - J'ouvre le fichier .csv contenant les routeurs. Grace au nom du fichier je récupère la zone. Je fait une requête sur la BD en fonction de la zone afin de récupérer le minimum du routers présent en BD. Je compare les deux tableaux et élimine les routeurs présents en BD et insère les autres. Voici le code.
    2 - Ce code à mon avis n'est pas optimiser. Je souhaiterais avoir des conseils pour son optimisation.
    3 - BP: je n'arrive pas à rappeler le menu une fois le script exécuté.
    Merci beaucoup pour les solutions.

    4 - Oui, c'est une représentation graphique que je souhaite faire. Les applications disponibles n'éclatent pas les supports de transmissions entre deux routeur. C'est à dire une fibre optique entre deux routeurs possède 63 liaisons 2mbits, chaque 2mbits contient 30 IT et sur chaque IT passe une application. Je souhaite avoir ce niveau d'information.

    #!/usr/bin/perl
    #!/bin/perl
    #!/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/DBI
    #!/opt/lampp/lib/perl5/site_perl/5.8.7/i686-linux
    #!c:\Perl\bin\perl C:\Perl\site\lib\Net\Telnet
    my $PATH = "/home/Admin_Expertt/Script_perl/ors_csv";
    use Switch;
    use DBI;

    #Découpage du nom du fichier afin de récupérer le nom du PCG et le transmettre en variable à la requete.
    if ( $NomFicEqt =~/^(.*)_(.*)_([a-zA-Z]+)/)
    {
    $Nature_objet = $1;
    $Type_Objet = $2;
    $PCG = $3;
    chop($PCG);
    }

    require "/home/Admin_Expertt/Script_perl/Fonctions/Connect_bd_plate-forme.pl";
    require "/home/Admin_Expertt/Script_perl/Fonctions/Prepa_requete_insert_eqt_ORS.pl";

    open (EQT_ORS, "<$PATH/$NomFicEqt.csv");
    my ( $Nom_equipement, $Num_serie );
    while ( defined( $line = <EQT_ORS> ) )
    {
    ( $Nom_equipement, $Num_serie ) = split( /;/, $line );
    push @eqt,$Nom_equipement;
    }
    #Récupération des équipements commençant par le nom du PCG passé en variable dans la requete
    for $test_eqt (@Match_eqt_tcm)
    {
    ( $cle_match_eqt, $t_site_FK_match_eqt, $nom_match_eqt ) = split( /;/, $test_eqt );
    push @Match_eqt, $nom_match_eqt;
    #print "@Match_eqt\n";
    }

    #Comparaison entre les eqt de la BD et ceux du fichier plat afin d'éliminer ceux présents ds la BD
    my %temp;
    @temp{@Match_eqt}=0..$#Match_eqt;
    print "---------------------------------------------------------------------\n";
    print "| Voici un état des lieux avant insertion définitive des équipements |\n";
    print "---------------------------------------------------------------------\n";
    for my $val(@eqt)
    {
    if (exists $temp{$val})
    {
    print "$val est présent dans la BD EXPERTT.\n";
    }
    else {
    print "$val n'est pas dans BD EXPERTT.\n";
    push @eqt_pour_insert, $val;
    }
    }
    print "\nVoulez-vous poursuivre l'opération ( oui / non) ? :";
    $Reponse = <>;
    if ($Reponse =~/non/)
    {
    print "\nVous aller sortir du mode insertion des eqts\n\n";
    sleep(5);
    require '/home/Admin_Expertt/Script_perl/Fonctions/Main_menu.pl';
    #exit();
    }
    elsif ($Reponse =~/oui/)
    {
    print "\n";
    print "-------------------------------------------------------------------------\n";
    print "| Les équipement suivants seront insérés dans la base de données EXPERTT |\n";
    print "-------------------------------------------------------------------------\n";

    #Découpage du nom de l'équipement avec l'expression régulière
    foreach my $val2(@eqt_pour_insert)
    {
    $Num_equipement++; $Nom_equipement = $val2; $Nom_eqt_rapport = $Nom_equipement;
    if ( $val2 =~ /^([a-zA-Z0-9-.\/]{5})([a-zA-Z]{1,3})(\d)([a-zA-Z]{1,5})?(\d+)?([a-zA-Z0-9-^a-zA-Z0-9]{1,5})?/)
    {
    $PCG = $1;
    $ARCHITECTURE_A = $2;
    $Num_archi_A = $3;
    $Type_site_A = $4;
    $Num_site_ds_bcl_A = $5;
    $Nom_site_pa_A = $6;
    }
    if ( $Type_site_A eq "PCG" )
    {
    $Nom_site_pa_A = $PCG;
    }

    #affectation aux équipements leur numéro de site National
    foreach $test_site (@Match_sites)
    {
    ( $Num_site, $Num_pcg, $Nom_court_site ) = split( /;/, $test_site );
    $Test_site = ( $Nom_court_site cmp $Nom_site_pa_A );
    if ( $Nom_site_pa_A eq $Nom_court_site )
    {
    $T_Sites_Num_site = $Num_site;
    print "$Nom_equipement - Num_Nat_Site: $T_Sites_Num_site - Nom_site_PA: $Nom_site_pa_A - PK_EQT: $Num_equipement\n";
    Insertion_equipement();
    }
    }
    }
    print "\n";
    }
    "true";

    #Fonction pour l'insertion des équipements dans la base de données.
    sub Insertion_equipement
    {
    $dbh->do(
    "INSERT INTO t_equipements_tcm (Num_equipement,Num_type_equipement,T_Commande_Materiel_Num_Commande_Materiel,
    T_Sites_Num_site,Num_modele_equipement_TCM,Num_etat,Nom_equipement,Nom_eqt_rapport,
    Num_serie,Num_constructeur,date_configuration,date_stock,date_essai,date_validation,
    date_consignation,date_exploitation,date_livraison,date_reparation,date_hors_exploitation,
    adresse_ip,SNMP,TACAS,IPSec,NPM,Fichier_Host,Commentaires,equipe,tel_contrat,fax_contrat,
    date_debut_contrat,type_contrat,duree_contrat,num_contrat,nom_societe,selecteur)
    VALUES ('$Num_equipement','$Num_type_equipement','','$T_Sites_Num_site','$Num_modele_equipement_TCM',
    '$Num_etat','$Nom_equipement','$Nom_eqt_rapport','$Num_serie','$Num_constructeur',
    '','','','','','','','','','','$SNMP','$TACAS','$IPSec','$NPM','$Fichier_Host','','','','','','','','','','')" );
    $dbh->do(
    "INSERT INTO equipement_projet (t_equipements_tcm_Num_equipement,t_projet_Num_projet) VALUES ('$Num_equipement','$Num_projet')" );
    }

  5. #5
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Bonjour. Mets des balises code, ce sera plus lisible.

    4. Tu peux certainement produire un tableau mais ce n'est pas très graphique. Ne pourrais-tu pas utiliser un logiciel de mind mapping (il en existe plusieurs open source) qui prend en entrée un fichier texte décrivant les relations d'un arbre ou d'un graphe quelconque et en produit une représentation graphique. Perl te permettra alors de formater les données pour les passer au mind mapper. C'est juste une idée.

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Vous n'êtes pas dans le bon forum, le forum Perl ne sert qu'aux annonces, vous devez utiliser les sous-forums (le sous-forum Langage si vous ne savez pas où poster sinon).

    --
    Jedaï

Discussions similaires

  1. [PHP 5.3] Requête mysql ou comparaisons de tableaux php ?
    Par nebenobo dans le forum Langage
    Réponses: 3
    Dernier message: 30/11/2013, 20h10
  2. [PERL/MYSQL] Temps de process interminable !!
    Par LE NEINDRE dans le forum SGBD
    Réponses: 7
    Dernier message: 22/10/2008, 12h45
  3. perl + mySQL
    Par wiss20000 dans le forum SGBD
    Réponses: 1
    Dernier message: 23/08/2006, 12h35
  4. Réponses: 1
    Dernier message: 07/10/2005, 09h24
  5. [langage] Comparaison de tableaux
    Par WetzlarMan dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2004, 14h08

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