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 :

aider moi pour rendre ce code plus claire


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 54
    Par défaut
    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
    use strict;
    use warnings;
     
    #my $file = $ARGV[0];
    my ($i,$TIMESTAMP,$AUTHOR,$file_name,$spreadsheet);
    my $SCRIPTNAME = $0;
    my $where = `pwd`;
    my @file =();
    my @endpoint=();
    my @ports=();
    my @result=();
    my @from_clk=();
    chomp ($where);
    $TIMESTAMP = `date`;
    chomp($TIMESTAMP);
    $AUTHOR = `whoami`;
    chomp($AUTHOR);
     
    #-------------------------------------------------------------------------------
    # Execution Order
    #-------------------------------------------------------------------------------
    PROCESS_ARGS();
    print "-------------------------------------------------------------------------\n";
    print "$file_name\n"; 
    print "-------------------------------------------------------------------------\n";
     
    #-------------------------------------------------------------------------------
    # PROCESS_ARGS
    #-------------------------------------------------------------------------------
    # Command line processor
    sub PROCESS_ARGS {
    my $ARGV = @ARGV;
    while (@ARGV) {
    $ARGV = shift @ARGV;
    # Files can be compared directly ::
    if ($ARGV eq "-file") {
    $file_name = shift @ARGV;
    }
    elsif ($ARGV eq "-spreadsheet") {
    $spreadsheet = shift @ARGV;
    }
    elsif ($ARGV eq "-h") {
    USAGE();
    }
    else {
    USAGE();
    }
    }
    }
    #############################################################################
    # open file for read
    #############################################################################
    open(FILE,"<$file_name") || die "ERROR: the file $file_name not found\n";
    open(OUT ,">$where/$spreadsheet") || die "ERROR: the file $file_name found\n";
    print OUT "Creation Date :\t\t $TIMESTAMP\n\n";
    print OUT "Author :\t \t $AUTHOR\n\n";
    print OUT "Nom du script :\t \t $SCRIPTNAME \n\n";
    print OUT "\n"; # Add csv sep's for the date's
    @file= <FILE>;
    for($i=0; $i<$#file+1 ;$i ++)
    {
    if ($file[$i]=~ s/^\s*-+\s*$//)
    {
    next;
    }
     
    if ($file[$i] =~ s/^\s*-+\s*$//)
    {
    next;
    }
    ### Ignire commented out line
    if ($file[$i]=~ /^#.*$/)
    {
    next;
    }
     
    ### Ignorer la dernier ligne
    if ($file[$i] =~ s/^\d*//)
    {
    next;
    }
    if ($file[$i] =~ s/^#//)
    {
    next;
    }
    for ($i =0; $i<$#file+1 ;$i ++) {
     
    print OUT "$file[$i] \n";
     
    }
     
    close FILE;
    close OUT;
    #-------------------------------------------------------------------------------
    # USAGE
    #-------------------------------------------------------------------------------
    sub USAGE {
    print "\n";
    print "================================================================================\n";
    print "\n";
    print "Function : This script is designed to parse multiple PrimeTime constraint report\n";
    print " files and correlate the data into a spreasheet format for analysis.\n";
    print "\n";
    print "Usage : $SCRIPTNAME [options] \n";
    print "\n";
    print "Options : -h Displays help message.\n";
    print " -file <filename> Specify PrimeTime report files explicitly\n";
    print " -spreadhseet <csv file> Output to CSV spreadsheet, default = stdout\n";
    print "\n";
    print "Syntax : \n";
    print " $SCRIPTNAME -file <file> [-file <file> ...] [options]\n";
    print "\n";
    print " options: [-spreadsheet <csv file>]]\n";
    print "\n";
    print "Examples : \n";
    print " $SCRIPTNAME -file mon_text -spreadsheet spreadsheet.csv \n";
    exit (0);
    }
    comme vous voyez ce code permet de copie du texte vers un autre fichier qu
    on rentre en argument

    je vous invite a participer a cette discussion!

  2. #2
    Membre émérite Avatar de messinese
    Homme Profil pro
    IT Security Consultant
    Inscrit en
    Septembre 2007
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IT Security Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 429
    Par défaut
    Bonjour,

    présenté comme ça pas sur qu'il y ait foule pour aider , merci d'employer les balises "code" appropriée :

    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
    use strict;
    use warnings;
     
    #my $file = $ARGV[0];
    my ($i,$TIMESTAMP,$AUTHOR,$file_name,$spreadsheet);
    my $SCRIPTNAME = $0;
    my $where = `pwd`;
    my @file =();
    my @endpoint=();
    my @ports=();
    my @result=();
    my @from_clk=();
    chomp ($where);
    $TIMESTAMP = `date`;
    chomp($TIMESTAMP);
    $AUTHOR = `whoami`;
    chomp($AUTHOR);
     
    #-------------------------------------------------------------------------------
    # Execution Order
    #-------------------------------------------------------------------------------
    PROCESS_ARGS();
    print "-------------------------------------------------------------------------\n";
    print "$file_name\n"; 
    print "-------------------------------------------------------------------------\n";
     
    #-------------------------------------------------------------------------------
    # PROCESS_ARGS
    #-------------------------------------------------------------------------------
    # Command line processor
    sub PROCESS_ARGS {
    my $ARGV = @ARGV;
    while (@ARGV) {
    $ARGV = shift @ARGV;
    # Files can be compared directly ::
    if ($ARGV eq "-file") {
    $file_name = shift @ARGV;
    }
    elsif ($ARGV eq "-spreadsheet") {
    $spreadsheet = shift @ARGV;
    }
    elsif ($ARGV eq "-h") {
    USAGE();
    }
    else {
    USAGE();
    }
    }
    }
    #############################################################################
    # open file for read
    #############################################################################
    open(FILE,"<$file_name") || die "ERROR: the file $file_name not found\n";
    open(OUT ,">$where/$spreadsheet") || die "ERROR: the file $file_name found\n";
    print OUT "Creation Date :\t\t $TIMESTAMP\n\n";
    print OUT "Author :\t \t $AUTHOR\n\n";
    print OUT "Nom du script :\t \t $SCRIPTNAME \n\n";
    print OUT "\n"; # Add csv sep's for the date's
    @file= <FILE>;
    for($i=0; $i<$#file+1 ;$i ++)
    {
    if ($file[$i]=~ s/^\s*-+\s*$//)
    {
    next;
    }
     
    if ($file[$i] =~ s/^\s*-+\s*$//)
    {
    next;
    }
    ### Ignire commented out line
    if ($file[$i]=~ /^#.*$/)
    {
    next;
    }
     
    ### Ignorer la dernier ligne
    if ($file[$i] =~ s/^\d*//)
    {
    next;
    }
    if ($file[$i] =~ s/^#//)
    {
    next;
    }
    for ($i =0; $i<$#file+1 ;$i ++) {
     
    print OUT "$file[$i] \n";
     
    }
     
    close FILE;
    close OUT;
    #-------------------------------------------------------------------------------
    # USAGE
    #-------------------------------------------------------------------------------
    sub USAGE {
    print "\n";
    print "================================================================================\n";
    print "\n";
    print "Function : This script is designed to parse multiple PrimeTime constraint report\n";
    print " files and correlate the data into a spreasheet format for analysis.\n";
    print "\n";
    print "Usage : $SCRIPTNAME [options] \n";
    print "\n";
    print "Options : -h Displays help message.\n";
    print " -file <filename> Specify PrimeTime report files explicitly\n";
    print " -spreadhseet <csv file> Output to CSV spreadsheet, default = stdout\n";
    print "\n";
    print "Syntax : \n";
    print " $SCRIPTNAME -file <file> [-file <file> ...] [options]\n";
    print "\n";
    print " options: [-spreadsheet <csv file>]]\n";
    print "\n";
    print "Examples : \n";
    print " $SCRIPTNAME -file mon_text -spreadsheet spreadsheet.csv \n";
    exit (0);
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Par défaut
    Merci messinese pour la balise "code".

    Sinon quel est le problème ? C'est plus facile à résoudre quand on le connaît ^^

    Pour le rendre plus clair tu entend quoi ??

    EDIT :
    Alors j'ai un peu indenté le code de façon à ce qu'il soit plus lisible et je remarque qu'il ne fonctionnera pas...

    Quelques petits oublis je pense, j'ai pas essayé de compiler car je n'ai pas perl sur cette machine mais voici le code indenté et avec quelques corrections.

    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
    use strict;
    use warnings;
     
    #my $file = $ARGV[0];
    my ($i,$TIMESTAMP,$AUTHOR,$file_name,$spreadsheet);
    my $SCRIPTNAME = $0;
    my $where = `pwd`;
     
    my @file =();
    my @endpoint=();
    my @ports=();
    my @result=();
    my @from_clk=();
     
    chomp ($where);
    $TIMESTAMP = `date`;
    chomp($TIMESTAMP);
    $AUTHOR = `whoami`;
    chomp($AUTHOR);
     
    #-------------------------------------------------------------------------------
    # Execution Order
    #-------------------------------------------------------------------------------
    PROCESS_ARGS();
    print "-------------------------------------------------------------------------\n";
    print "$file_name\n"; 
    print "-------------------------------------------------------------------------\n";
     
    #-------------------------------------------------------------------------------
    # PROCESS_ARGS
    #-------------------------------------------------------------------------------
    # Command line processor
    sub PROCESS_ARGS {
    					my $ARGV = @ARGV;
    					while (@ARGV) {
    						$ARGV = shift @ARGV;
    # Files can be compared directly ::
    						if ($ARGV eq "-file") {
    							$file_name = shift @ARGV;
    						}
    						elsif ($ARGV eq "-spreadsheet") {
    							$spreadsheet = shift @ARGV;
    						}
    						elsif ($ARGV eq "-h") {
    							USAGE();
    						}
    						else {
    							USAGE();
    						}
    					}
    				}
     
     
    #############################################################################
    # open file for read
    #############################################################################
    open(FILE,"<$file_name") || die "ERROR: the file $file_name not found\n";
    open(OUT ,">$where/$spreadsheet") || die "ERROR: the file $file_name found\n";
     
    print OUT "Creation Date :\t\t $TIMESTAMP\n\n";
    print OUT "Author :\t \t $AUTHOR\n\n";
    print OUT "Nom du script :\t \t $SCRIPTNAME \n\n";
    print OUT "\n"; # Add csv sep's for the date's
     
    @file= <FILE>;
    for($i=0; $i<$#file+1 ;$i ++){
    	if ($file[$i]=~ s/^\s*-+\s*$//){
    		next;	
    	}
    	if ($file[$i] =~ s/^\s*-+\s*$//){
    		next;
    	}
    ### Ignire commented out line
    	if ($file[$i]=~ /^\#.*$/){
    		next;
    	}
    ### Ignorer la dernier ligne
    	if ($file[$i] =~ s/^\d*//){
    		next;
    	}
    	if ($file[$i] =~ s/^\#//){
    		next;
    	}
    	for ($i =0; $i<$#file+1 ;$i ++){
    		print OUT "$file[$i] \n";
    	}
    }
    close FILE;
    close OUT;
    #-------------------------------------------------------------------------------
    # USAGE
    #-------------------------------------------------------------------------------
    sub USAGE	{
    				print "\n";
    				print "================================================================================\n";
    				print "\n";
     
    				print "Function : This script is designed to parse multiple PrimeTime constraint report\n";
    				print " files and correlate the data into a spreasheet format for analysis.\n";
     
    				print "\n";
     
    				print "Usage : $SCRIPTNAME [options] \n";
     
    				print "\n";
     
    				print "Options : -h Displays help message.\n";
    				print " -file <filename> Specify PrimeTime report files explicitly\n";
    				print " -spreadhseet <csv file> Output to CSV spreadsheet, default = stdout\n";
     
    				print "\n";
     
    				print "Syntax : \n";
    				print " $SCRIPTNAME -file <file> [-file <file> ...] [options]\n";
     
    				print "\n";
     
    				print " options: [-spreadsheet <csv file>]]\n";
     
    				print "\n";
     
    				print "Examples : \n";
    				print " $SCRIPTNAME -file mon_text -spreadsheet spreadsheet.csv \n";
     
    				exit (0);
    			}
    J'ai rajouté lignes 74 et 81 un \ devant le # sinon le compilateur va râler et dire qu'il manque une parenthèse ou un truc du genre, en effet si on oublie la protection la suite sera commentée et le if faut.
    J'ai aussi fermé la boucle for qui commence ligne 66, elle restait ouverte.

    J'ai lu en diagonale le code car je suis pressé là et j'ai vu ces 3 petits trucs.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 71
    Par défaut re
    re,

    deja pour le $where, plutot que d'utiliser pwd, regarde du coté de Find::Bin qui te donnera le dossier du programme Perl

    ( a voir si ton fichier enregistré est dans le meme dossier )

    cordialement

  5. #5
    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
    Billets dans le blog
    1
    Par défaut
    Le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i =0; $i<$#file+1 ;$i ++){
    		print OUT "$file[$i] \n";
    	}
    se trouve semble-t-il à l'intérieur de l'autre boucle for. Ce n'est sans doute pas ce que tu souhaites.


    Par ailleurs, si tu veux simplifier le code, utilise les idioms Perl au lieu d'une syntaxe de type C.

    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
    for($i=0; $i<$#file+1 ;$i ++){
    	if ($file[$i]=~ s/^\s*-+\s*$//){
    		next;	
    	}
    	if ($file[$i] =~ s/^\s*-+\s*$//){
    		next;
    	}
    ### Ignire commented out line
    	if ($file[$i]=~ /^\#.*$/){
    		next;
    	}
    ### Ignorer la dernier ligne
    	if ($file[$i] =~ s/^\d*//){
    		next;
    	}
    	if ($file[$i] =~ s/^\#//){
    		next;
    	}
    	for ($i =0; $i<$#file+1 ;$i ++){
    		print OUT "$file[$i] \n";
    	}
    }
    peut se réécrire ainsi (en corrigeant le bug mentionné plus haut) et en ajoutant un chomp pour enlever le retour chariot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    chomp @file; # commande ajoutée pour enlever le retour à la fin des lignes
    foreach (@file){
    	next if  s/^\s*-+\s*$//);
            next if  s/^\s*-+\s*$//);
    ### Ignore commented out line
    	next if  /^\#.*$/);
    ### Ignorer la dernier ligne
    	next if s/^\d*//);
    	next if  s/^\#//);
    }
    foreach (@file){
    	print OUT "$_\n";
    	}

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 54
    Par défaut
    avant de donner des commentaires a vos remarque je voudrais une instruction regexp qui me permet de faire la fodification suivante
    dans un ligne j ai le message suisvant:
    blabla blabla : blabla blabla message 'que je veux garder'
    je veux une regexp qui permet d enlevé tt il me garde juste le message entre simple quotes
    merci

Discussions similaires

  1. Colorer le texte pour un code plus clair
    Par mcmana dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/10/2012, 08h25
  2. Réponses: 16
    Dernier message: 04/02/2010, 10h08
  3. Aider mois pour apprendre C++
    Par osma_1978 dans le forum C++
    Réponses: 6
    Dernier message: 25/08/2006, 14h45
  4. rendre une cellule plus claire au passage de la souris
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 02/08/2006, 09h29
  5. Aider moi pour sql server et delphi
    Par aqs dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/06/2005, 21h16

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