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 :

logique à adopter


Sujet :

Langage Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut logique à adopter
    Bonjour à tous

    j'ai un petit script à réaliser dans l'ensemble il fonctionne cependant il est long à l’exécution ne connaissant que trop peu le perl j'en appelle à votre expérience.

    En effet le perl semble adapter a notre problème (mini projet professionnel nous sommes deux et c'est mon collègue qui à commencé le projet en perl), car tout notre projet repose sur le fait d'aller chercher des informations dans des fichiers .txt et de les regrouper.

    nous avons des 3 gestionnaires réseaux avec les quels nous pouvons extraire les données réseaux ...

    nous aimerions regrouper les données des gestionnaires car même si nous avons 3 gestionnaires les données sont liées.


    avec le programme que nous sommes en train de développer nous nous servons de 5 fichiers ( 3 extractions, 2fichiers temporaire et enfin le fichier que l'on obtiens à la fin de la routine).

    au final nous avons 600 lignes et +30 informations par lignes





    pensez vous qu'il existe une fonction utile à mon problème ?


    d'avance merci

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonjour,

    Expliquer ainsi sans exemple de fichiers et de codes c'est assez vague.
    Il faut nous donner des exemples de données, de résultat à obtenir puis votre code pour que nous puissions vous aider.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Merci pour votre réponse, effectivement je n'ai pas pris la peine de vous mettre les fichiers ni même le code car ils sont assez long.

    exemple de traitement utilisé pour le premier fichier.
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    while (<IN>) {
          #Matcher le nom du circuit (Identification de début du circuit)
            if ( /userLabel "([a-zA-Z0-9_.-]+)"/ ) {
                    $circuit = $1.$2;
                    }
             if ( /userLabel "(.*)"/ ) {
                    $circuit = $1;
                    }
             if (/serviceType ([a-zA-Z0-9.]+)/)
                    {
                    $serviceType = $1;
                    }
             if (/pathRate ([a-zA-Z0-9.]+)/)
                    {
                    $pathRate = $1;
                    }
            if (/text1 (")([a-zA-Z0-9.-]+)(")/)
                   {
                    $Anneau = $2;
                    }
            if (/nap (")([a-zA-Z0-9.]+-[a-zA-Z0-9]+)\/((r)(\d+)(s)(\d+)(b)(\d+)(p)(\d+))(.*)(")/)
                     {
                    push @Eqt, $2;
                    push @Emplacement, $4.$5.$6.$7.$8.$9.$10.$11;
                    push @Port, $11;
                    push @Naps, $9;
                    push @Position, $3;
                    if ($i<=2){
                            @Port2M[$i] = $2."-".$9."-".$11;
                            $i++;
                            }
                    if ($i>2)
                            {
                            print FIC $circuit."\t".@Port2M[1]."\t".@Port2M[2];
                            print $circuit." - ".@Port2M[1]." - ".@Port2M[2]."\n" ;
                            $i=1;
                            }
                     }
     
            if (/constraintType\s+use\s+section "(\w+)"/)
                   {
                    $TypeChemin = $1;
                    }
     
            #Récupération des cheminements du circuit, Conduits Main, Spare, AU et KLM
             if (/port (")([a-zA-Z0-9.]+-[a-zA-Z0-9]+)\/((r)(\d+)(s)(\d+)(b)(\d+)(p)(\d+))(.*)(")(.*)payloadPos (")(\d+)\/(\d+)\/(\d+).(\d+)(")(.*) constraintType\s+use\s+section (")(\w+)(")/)
                    {
                            if ($i<=2)
                                    {
                                    #print $2.$9.$11." -- ".$23."\n";
                                    @PortOpt[$i] = $2."-".$9."-".$11;
                                    @section[$i] = $23;
                                    @K[$i] = $17;
                                    @L[$i] = $18;
                                    @M[$i] = $19;
                                    $i++;
                                    }
                            if ($i>2)
                                    {
                                    print FIC @PortOpt[1]."\t".@PortOpt[2]."\t".@K[1]."\t".@L[1]."\t".@M[1]."\t".@section[1]."\n";
     
                                    print @PortOpt[1]." - ".@PortOpt[2]." - KLM: ".@K[1].@L[1].@M[1]." - Section : ".@section[1]."\n" ;
                                    #print FIC"$circuit";
                                    #print FIC "\t$serviceType\t$pathRate\t$Eqt[0]\t$Emplacement[0]\t@Port2M[1]\t$Eqt[1]\t$Emplacement[1]\t@Port2M[2]\t$val\n";
                                    #print "$circuit - $Eqt[0] - @Port2M[1] - @Port2M[2] - @PortOpt[1] - @PortOpt[2] - $AU2[0] - $Eqt[1] - $Emplacement[1] - $Port[1] - $KLM\n";
                                    $i=1;
     
                                    }
                            }
    }

    voici un exemple du fichier:
    SET ntwId 24 END
    SET restDomId 1 END
    CREATEpath
    userLabel "CRS0000001"
    serviceType pdh
    pathType bidirectionalPtoPto
    pathRate lo2Mb
    transportRate loTu12
    configurationRate notMeaningful
    protType sh1Plus1EToEProt
    allocationConstraint noRestriction
    alarmPropRule whenImplemented
    allAlgType automatic
    userId "users/salvertl"
    text1 "AR1-01"
    text2 "GAVRE-ES001"
    text3 "VENDIN-ES002"
    pmAutomatic false
    msProtProfile normal
    pdhAlrEnabRule onImplementation
    sdhAlrEnabRule onImplementation
    concatenationLevel 0
    ethMapping notMeaningful
    npaMainSpareFactor 100
    msspringDCFactor 80
    sncpType sncpIpreferredAlr
    defaultRerouting preCalculated
    defaultPriority 4
    defaultSetupPriority 5
    defaultReversionMode automatic
    endTpList
    nap "GAVRE-ES001/r01s1b01p01c01"
    endType endA
    usedDir bidirectional
    nap "VENDI-ES002/r01s1b01p02c01"
    endType endZ
    usedDir bidirectional
    END
    END
    CHOWNonObj path
    userLabel "CRS0000001"
    securityLabel 1
    END
    CONSTRpath
    userLabel "CRS0000001"
    port "GAVRE-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "main"
    port "VENDI-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "main"
    port "GAVRE-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "GAVRE-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "GAVRE-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "CHEVA-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "CHEVA-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "AMIEN-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "AMIEN-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "AMIEN-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "AMIEN-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "ARGOE-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "ARGOE-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "ARGOE-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "ARGOE-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "SORRU-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "SORRU-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "MANDA-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "MANDA-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "MANDA-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "MANDA-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "ATTAQ-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "ATTAQ-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "WARAN-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "WARAN-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "WARAN-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "WARAN-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "G.SYN-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "G.SYN-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "G.SYN-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "G.SYN-ES002/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "WEPPE-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "WEPPE-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "LOMM5-ES003/r01s1b10p01" payloadPos "02/3/6.2" constraintType use section "spare"
    port "LOMM5-ES003/r01s1b11p01" payloadPos "02/3/6.2" constraintType use section "spare"
    port "PRRTT-ES003/r01s1b10p01" payloadPos "02/3/6.2" constraintType use section "spare"
    port "PRRTT-ES003/r01s1b11p01" payloadPos "02/3/6.2" constraintType use section "spare"
    port "VENDI-ES001/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "VENDI-ES001/r01s1b10p02" payloadPos "02/3/6.2" constraintType use section "spare"
    port "VENDI-ES002/r01s1b09p02" payloadPos "02/3/6.2" constraintType use section "spare"
    END
    ALLOCpath
    userLabel "CRS0000001"
    END
    CONSTRpath
    userLabel "CRS0000001"
    END
    IMPLpath
    userLabel "CRS0000001"
    END
    COMMISSIONpath
    userLabel "CRS0000001"
    END
    SETpath
    allocRule user
    implRule user
    allocationConstraint noRestriction
    END

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    a savoir que les 3 fichiers d’extraction, n'ont pas du tout la même forme...

    cependant il y a quelque données en commun, ce qui me permet de regrouper les données ensembles.

    en effet le but de cette routine est de rassembler ensemble toutes les données connectés et ceux pour 600 liens...


    j'essaye au mieux d'être le plus clair possible, mais ça semble difficile de l'expliquer par écrit.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    Je vais essayer d'être plus clair. j'ai conscience que ça va pas être facile pour vous de m'aider si je ne m'exprime pas mieux.


    je travail dans le domaine des réseaux télécoms sur support optique.

    pour gérer les équipements nous avons 3 gestionnaires qui permette de faire la distinction entre 3 types d'éléments ...

    • les conduits
    • les liens
    • les circuits



    dans l'extraction des conduits je cherche les informations suivante :
    • le nommage du Conduit introduit par userLabel
    • le Port Optique Extrémité A et B introduit par port
    • l'AU introduit par payloadPos
    • structuration du conduit introduit par payloadStructure



    voici les deux premiers conduit de l’extraction fichier de 6Mo en texte brut
    SET ntwId 24 END
    SET restDomId 1 END
    CREATEtrail
    userLabel "CDMXT111002"
    trailType pointToPoint
    flow bidirectional
    pmAutomatic false
    protType notProtected
    msProtProfile normal
    sdhAlrEnabRule onImplementation
    includeAnyColorId 1
    excludeAnyColorId 2
    sncpType sncpIpreferredAlr
    npaMainSpareFactor 100
    msspringDCFactor 80
    usageLevel 36
    fragmentationLevel 0
    supportedAu3 notMeaningful
    supportedLO notMeaningful
    intermCtpLoopback noIntLoop
    defaultRerouting preCalculated
    defaultPriority 4
    defaultSetupPriority 5
    defaultReversionMode automatic
    tu12OperState enabled
    autoPurge false
    transportRate hoAu4
    includeAnyColorName "NoColor"
    excludeAnyColorName "AllColors"
    endTpList
    ctp "LOMM5-ES003/r01s1b11p01" payloadPos "03"
    ctp "PRRTT-ES003/r01s1b10p01" payloadPos "03"
    END
    END
    CHOWNonObj trail
    userLabel "CDMXT111002"
    securityLabel 0
    END
    CONSTRtrail
    userLabel "CDMXT111002"
    port "LOMM5-ES003/r01s1b11p01" payloadPos "03" constraintType use section "main"
    port "PRRTT-ES003/r01s1b10p01" payloadPos "03" constraintType use section "main"
    END
    ALLOCtrail
    userLabel "CDMXT111002"
    END
    CONSTRtrail
    userLabel "CDMXT111002"
    END
    IMPLtrail
    userLabel "CDMXT111002"
    END
    CONFIGtrail
    userLabel "CDMXT111002"
    payloadStructure tu3Tu3Tu12
    END
    SET ntwId 24 END
    SET restDomId 1 END
    CREATEtrail
    userLabel "CDMXT111006"
    trailType pointToPoint
    flow bidirectional
    pmAutomatic false
    protType notProtected
    msProtProfile normal
    sdhAlrEnabRule onImplementation
    includeAnyColorId 1
    excludeAnyColorId 2
    sncpType sncpIpreferredAlr
    npaMainSpareFactor 100
    msspringDCFactor 80
    usageLevel 36
    fragmentationLevel 0
    supportedAu3 notMeaningful
    supportedLO notMeaningful
    intermCtpLoopback noIntLoop
    defaultRerouting preCalculated
    defaultPriority 4
    defaultSetupPriority 5
    defaultReversionMode automatic
    tu12OperState enabled
    autoPurge false
    transportRate hoAu4
    includeAnyColorName "NoColor"
    excludeAnyColorName "AllColors"
    endTpList
    ctp "PRRTT-ES003/r01s1b11p01" payloadPos "03"
    ctp "VENDI-ES001/r01s1b09p02" payloadPos "03"
    END
    END
    CHOWNonObj trail
    userLabel "CDMXT111006"
    securityLabel 1
    END
    CONSTRtrail
    userLabel "CDMXT111006"
    port "PRRTT-ES003/r01s1b11p01" payloadPos "03" constraintType use section "main"
    port "VENDI-ES001/r01s1b09p02" payloadPos "03" constraintType use section "main"
    END
    ALLOCtrail
    userLabel "CDMXT111006"
    END
    CONSTRtrail
    userLabel "CDMXT111006"
    END
    IMPLtrail
    userLabel "CDMXT111006"
    END
    CONFIGtrail
    userLabel "CDMXT111006"
    payloadStructure tu3Tu3Tu12
    END

    pour le fichier Lien je récupère
    • le nommage du lien qui commence par LIC ou LIS
    • le Port Optique ExtA et ExtB ce sont les infos juste après le nomage du lien
    • le débit commence par STM



    voici les deux premiers liens de mon extraction des liens

    LIC000023 G.SYN-ES002/r01s1b10p02 WEPPE-ES001/r01s1b09p02 Enabled Cleared Not In ServiceImplemented SDH Normal Normal STM4 Normal Generic OpticaUnknown 2009/01/12-14:53:34
    LIC000035 BALM5-ES001/r01s1b09p02 P.SIM-ES002/r01s1b10p02 Enabled Cleared Not In ServiceImplemented SDH Normal Normal STM4 Normal Generic OpticaUnknown 2009/10/29-12:25:42
    je vous épargne le fichiers des circuits, il faut savoir que ces 3 fichiers ont une mise en forme différente les uns des autres cependant les informations sont liées.

    pour un lien on a un conduit et DES circuits, le but de ma routine est de rassembler les infos entre elles.


    je commence par extraire les données du fichier des liens je fait la même chose avec les conduit et je rassemble les données.

    je traite ensuite les circuits et je rassemble les données ...


    En somme l'idée de base n'est pas compliqué cependant le traitement est long et je pose la question de savoir si je m'y prends de la meilleurs des façons.

    j'ai vu qu'en VBA par exemple il y avait une notion de dictionnaire (une sorte de base de données) existe-t-il qu'elle que chose de similaire adapter à mon besoin en perl ?

    je pense à cette notion puisque je cherche simplement a rassembler les données liées entre elles ... au finale une ligne doit comporté toutes les infos du lien X et la ligne 2 doit pouvoir comporté la toutes les infos du lien Y etc etc ...


    donc au lieu de faire 2 fichier temporaire qui ne me servent pas au final... puis je finalement tout faire en "même temps" et alléger le traitement ?

    d'avance merci pour votre aide et votre patience

    PS: j'ai conscience que le cas est pas évident à comprendre je fait de mon mieux pour l'exposer simplement.

  6. #6
    Membre averti Avatar de zanker
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Par défaut
    Bonjour,

    Effectivement ce n'est pas évident à comprendre. J'ai un peu de mal.

    Le code présenté n'est pas assez propre et contient beaucoup d'expressions régulières.
    Suivant la construction des expressions régulières, elles peuvent prendre une part non négligeable des traitements.

    1. Les 2 premiers if() font exactement la même chose.
    2. Il serait mieux, après le premier if(), de faire une succession de elsif() pour éviter le traitement à chaque ligne de toutes les expressions régulières. Car si la ligne courante match avec 1 expression régulière, elle ne matchera pas avec une autre bien différente.
    3. Pour ne pas traiter les expressions régulières qui ont déjà permis la récupération d'une valeur dans une variable Perl, il faut rajouter une condition "and" sur la variable dans les if() et elsif().
    4. Je pense aussi qu'il serait mieux de séparer les expressions régulières complexes, dans les if() et elsif(), des captures quelles permettent d'effectuer. Cela simplifierait les expressions régulières dans les if() et elsif() et rendrait le code plus rapide.
    5. Positionner la chaine recherchée dans l'expression régulière avec un "^" ou un "$" améliore le temps de traitement.


    Exemple pour 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
    21
    22
    23
    24
    25
    26
          if ( /userLabel "([a-zA-Z0-9_.-]+)"/ ) {
                    $circuit = $1.$2;
                    }
             if ( /userLabel "(.*)"/ ) {
                    $circuit = $1;
                    }
             if (/serviceType ([a-zA-Z0-9.]+)/)
                    {
                    $serviceType = $1;
                    }
             if (/pathRate ([a-zA-Z0-9.]+)/)
                    {
                    $pathRate = $1;
                    }
            if (/text1 (")([a-zA-Z0-9.-]+)(")/)
                   {
                    $Anneau = $2;
                    }
            if (/nap (")([a-zA-Z0-9.]+-[a-zA-Z0-9]+)\/((r)(\d+)(s)(\d+)(b)(\d+)(p)(\d+))(.*)(")/)
                     {
                    push @Eqt, $2;
                    push @Emplacement, $4.$5.$6.$7.$8.$9.$10.$11;
                    push @Port, $11;
                    push @Naps, $9;
                    push @Position, $3;
      . . .
    Qui devient:
    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
    if ( $circuit  ne "" and /^userLabel "(.+)"/ ) {
    	$circuit = $1;
    }
    elsif ($serviceType ne "" and /^serviceType (.+)/)
    {
    	$serviceType = $1;
    }
    elsif ($pathRate ne "" and /^pathRate (.+)/)
    {
    	$pathRate = $1;
    }
    elsif ($Anneau ne "" and /text1 "(.+)"/)
    {
    	$Anneau = $1;
    }
    elsif (/^nap ".+"/)
    {
    	/"([a-zA-Z0-9.]+-[a-zA-Z0-9]+)\/((r)(\d+)(s)(\d+)(b)(\d+)(p)(\d+))(.*)"/;
    	push @Eqt, $1;
    	push @Emplacement, $3.$4.$5.$6.$7.$8.$9.$10;
    	push @Port, $10;
    	push @Naps, $8;
    	push @Position, $2;
       . . .
    Pour l'optimisation, il faut retenir qu'avec les expressions régulières/rationnelles, le code doit les utiliser que si nécessaire.

    Voilà mes conseils.

    Il est peut être encore possible d'améliorer les traitements avec toutes ces expressions régulières en les déclarants dans des variables en amont du script.
    Voir la documentation ici. (Je n'ai jamais testé ça.)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 47
    Par défaut
    merci pour ces conseils !


    est ce que cela te derangerait de regarder mon code entier afin de donner ton avis après que j'ai appliqué tes conseils ?

    merci encore

  8. #8
    Membre averti Avatar de zanker
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Par défaut
    Bonjour,

    désolé, je ne regarderai pas tout ton code. Il faut du temps pour ça.
    Je te propose des solutions, à toi de les appliquer et de les tester.
    Tu pourras poster les erreurs que tu rencontres dans ce forum dans le cas où tu n'arrives pas à les solutionner avec la doc Perl.

    Erratum: Je proposais le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($variable ne "" and ... )
    en fait, c'est plutôt ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($variable eq "" and ... )
    A+

Discussions similaires

  1. Processus.. adoption d'un processus par init
    Par Francois Trazzi dans le forum Administration système
    Réponses: 15
    Dernier message: 17/01/2005, 13h56
  2. Evalutation d'expression logique/booleenne
    Par eesteban dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/06/2004, 14h58
  3. Détection des disques physiques et logiques
    Par TheBigMac dans le forum Assembleur
    Réponses: 3
    Dernier message: 10/06/2004, 21h08
  4. Port parallèle et ou logique
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2004, 19h02
  5. Un lecteur logique caché!!!
    Par Cyberman dans le forum Composants
    Réponses: 3
    Dernier message: 05/10/2003, 23h16

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