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 :

Appel de Paramètres


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut Appel de Paramètres
    Bonjour,

    Je rencontre un petit soucis lors de l'appel de mes paramètres, le premier paramètre est le Nom de Fichier, et le deuxième le chemin.

    Quand en DOS je fais ma commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl verif.pl init.sql C:\Documents and Settings\user\Mes documents\Verif_Script
    Ceci marche très bien car je suis dans le repertoire C:\Documents and Settings\user\Mes documents\Verif_Script en DOS.

    Maintenant je veux faire la même chose mais dans un autre répertoire et avec un autre Init.sql, mais toujours en étant dans C:\Documents and Settings\user\Mes documents\Verif_Script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl verif.pl Init.sql C:\disque-e\X7-sources\V61400\Oracle


    Mais il me prend le Init.sql de C:\Documents and Settings\user\Mes documents\Verif_Script au lieu de C:\disque-e\X7-sources\V61400\Oracle

    Comment faire ?

    J'ai essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl verif.pl C:\disque-e\X7-sources\V61400\Oracle\Init.sql C:\disque-e\X7-sources\V61400\Oracle


    Mais ça plante !

    Une idée svp ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il faut aussi fournir ton script... ou du moins, la partie qui traite des paramètres.

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut
    oups, désolé, la partie ou je fourni les paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find( { wanted => \&process, }, $ARGV[1] // './' );


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boucle($ARGV[0] // "Init.sql", 0); #appel de la fonction boucle


    et mon script entier :



    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    # !usr/bin/perl -w
    use strict;
    use warnings;
    use File::Find; # modulepour lister des fichiers 
    use 5.10.0;
     
    my $cpt = 0; # Compteur
     
    my @tabData =([0]); # tabDataleau 
    my $tabData_nb = 0; # Compteur
     
    my @tabFic =([0]); # tab des fichiers
    my $tabFic_nb = 1; # Compteur
     
    my $i = 0; # Variable compteur
    my $z = 0; # Variable compteur
    my $indice = 0; # Variable compteur pour écriture du fichier	
    my $y = 0; # Variable compteur pour écriture du fichier
    my $profondeur = 0;
     
    #######################################################################################################
    #                         		             tabFic                                                   #
    #######################################################################################################	
     
    $tabFic[0][0]="Nom Fichier";
    $tabFic[0][1]="est Utilisé";
     
    find( { wanted => \&process, }, $ARGV[1] // './' );
     
    sub process {
    	$tabFic[$tabFic_nb][0]="null"; # 1. On stocke le fichier
    	$tabFic[$tabFic_nb][1]=1;
    	# if ( -f $File::Find::name ) { print "$File::Find::name\n"; } # fichiers dans le repertoire avec le nom du chemin
    	if ( -f $File::Find::name ) { # fichiers dans le repertoire
    		$tabFic[$tabFic_nb][0] = $_;
    		$tabFic_nb++;
    	} 
    }
     
    sub boucle;
     
    #######################################################################################################
    #                         Début du traitement et ouverture fichiers                                   #
    #######################################################################################################
     
        print "\n-------------------------------------------------------\n";
        print "|---------------  Debut du traitement  ---------------|\n";
        print "-------------------------------------------------------\n";
     
    open ECRIRE,  '>', "verif.html" or die("Erreur de création de verif.html");
     
    #######################################################################################################
    #                         		             tabData                                                  #
    #######################################################################################################	
     
    $tabData[0][0]="Fichier";
    $tabData[0][1]="Niveau";
    $tabData[0][2]="est Existant";
    $tabData[0][3]="est Vide";
    $tabData[0][4]="est utilisé";
    $tabData[0][5]="est sensible casse";
     
    sub boucle {	
    	my ($NomFichier, $niv) = @_; # paramètres de la fonction boucle
     
    	$tabData[$tabData_nb][0]=$NomFichier; # 1. On stocke le fichier
    	$tabData[$tabData_nb][1]=$niv;
    	$tabData[$tabData_nb][2]=1;# Fichier existant : 0 (pour non) ou 1 (pour oui)
    	$tabData[$tabData_nb][3]=0;# Fichier vide : 0 (pour non) ou 1 (pour oui)
    	$tabData[$tabData_nb][4]=1;# Fichier utilisé : 0 (pour non) ou 1 (pour oui)
    	$tabData[$tabData_nb][5]=0;# Fichier sensible casse : 0 (pour non) ou 1 (pour oui)
     
    	open (my $Fichier, '<', $NomFichier);  # 2. On ouvre le fichier
    	if (! open (my $Fichier, '<', $NomFichier)) {
    		$tabData[$tabData_nb][2]=0;
    		return();
    	}
    	if ( -z $NomFichier ) { # si le fichier est vide on met 1
    		$tabData[$tabData_nb][3]=1;
    	}
     
    	while ( my $ligne = <$Fichier>) {  # 3. On parcours le fichier
    		if (( $ligne =~ m/^^@@\s*(.+)/ ) ||  # Si on trouve un appel
    			( $ligne =~ m/^^@\s*(.+)/ ) ||
    			( $ligne =~ m/^^sta\s*(.+)/ )){
    			$tabData_nb++;
    			$cpt++;
    			&boucle($1,$niv+1);
    		}	
    	}	
    	if ($profondeur < $niv){ 
    		$profondeur = $niv;
    	}
    	close $NomFichier;
    }
     
    boucle($ARGV[0] // "Init.sql", 0); #appel de la fonction boucle
     
    	for($i=0; $i<=$tabFic_nb-1; $i++){
    		for($z=0; $z<=$tabData_nb; $z++){
    			if ($tabData[$z][0] eq $tabFic[$i][0]){
    				$tabFic[$i][1] = 1;
    				last;
    			}
    			else{
    				$tabFic[$i][1] = 0;
    			}
    			if(lc($tabData[$z][0]) eq lc($tabFic[$i][0])){ # pour forcer a éviter la casse
    				$tabFic[$i][1] = 1;
    				$tabData[$z][5] = 1;
    				last;
    			}
    		}
    	}
     
    #######################################################################################################
    #                                           Ecriture                                                  #
    ####################################################################################################### 
     
    print ECRIRE"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\" >
        <head>
           <title>Verif Script</title>
           <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
    	   <link rel=\"stylesheet\" media=\"screen\" type=\"text/css\" title=\"Style\" href=\"style.css\" />
        </head>
        <body>
        <table>
    		<caption >Vérification des scripts</caption >\n";
     
    for ($y=0; $y<=$tabData_nb; $y++){
    	print ECRIRE "    <tr>\n";
    	for($indice=0;$indice<=$profondeur;$indice++){
    		if ($tabData[$y][2]==0){ # Gestion des fichiers non existant, en rajoutant des balise div id rouge autour
    			if( $tabData[$y][0]=~ m/^\s*<div(.+)/){
    				# print " rien \n";
    			}
    			else{
    				$tabData[$y][0] = join "", "<div id=rouge>", $tabData[$y][0], "</div>";
    			}
    		}
    		if($tabData[$y][1] == $indice){ # Ecriture données dans la colonne en fonction de l'indice (le niveau)
    			if($tabData[$y][5] == 1){
    				if ($tabData[$y][2]!=0){
    					print ECRIRE join "","<td><a href=\"./", $tabData[$y][0],"\"><div id=orange>", $tabData[$y][0], "</div></a></td>\n";
    					# on print le a href avec le nom du fichier
    				}
    			}
    			else{
    				if ($tabData[$y][2]!=0){
    					print ECRIRE "<td><a href=\"./", $tabData[$y][0] ,"\">", $tabData[$y][0], "</a></td>\n";
    					# on print le a href avec le nom du fichier
    				}
    				else{
    					print ECRIRE  "        <td>", $tabData[$y][0], "</td>\n";
    					# on print que le nom de fichier 
    				}
    			}
    		}
    		else{
    			print ECRIRE "        <td></td>\n";
    		}
    		print ECRIRE "\n";
    	}
    	print ECRIRE "    </tr>\n";
    }
     
    print ECRIRE "	
    	</table>
    		<h3>Fichiers non existants :</h3>";
     
    for ($y=0; $y<=$tabData_nb; $y++){
    	if ($tabData[$y][2]==0){
    		print ECRIRE $tabData[$y][0];
    	}
    }
     
    print ECRIRE "
    		<h3>Fichiers non utilisés :</h3>";
    for ($i=1; $i<=$tabFic_nb-1; $i++){
    	if ( $tabFic[$i][1] == 0){
    		print ECRIRE "<br/><a href=\"./", $tabFic[$i][0],"\">", $tabFic[$i][0], "</a></td>\n";
    	}
    }
     
    print ECRIRE "
    	</body>
    	</html>\n";
     
    #######################################################################################################
    #                                         Compteur                                                    #
    #######################################################################################################
     
        print "-------------------------------------------------------\n";
        print "|--------- Il y a $cpt scripts/fichiers trouves --------|\n";
        print "-------------------------------------------------------\n";
     
    #######################################################################################################
    #                            Fin du traitement et Fermeture Fichiers                                  #
    #######################################################################################################
     
        print "-------------------------------------------------------\n";
        print "|----------------  Fin du traitement  ----------------|\n";
        print "-------------------------------------------------------\n";
     
    close ECRIRE;

    voila

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 236
    Par défaut
    j'ai reussis, en rajoutant :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chdir($ARGV[1] // $rep) || die ("Erreur chdir \n");

  5. #5
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel de paramètre dans méthode
    Par Zhamy dans le forum C#
    Réponses: 8
    Dernier message: 10/05/2010, 19h28
  2. appel servlet + paramètres
    Par Ikki dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/09/2008, 12h22
  3. [C++] Appel via paramètres non managés
    Par JulienDuSud dans le forum Framework .NET
    Réponses: 4
    Dernier message: 28/12/2005, 11h42
  4. [C#][WebServices] Appel methode avec une classe en paramètre
    Par bran_noz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 17h41
  5. Paramétrer l'appel d'une dialog ou d'une autre ?
    Par olive_le_malin dans le forum MFC
    Réponses: 12
    Dernier message: 16/07/2004, 15h53

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