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 :

Afficher texte après x espace en partant de la marge gauche


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 198
    Par défaut Afficher texte après x espace en partant de la marge gauche
    Bonjour,

    pour un petit besoin, je cherche à imprimer sur une même ligne, un un texte collé à gauche et un autre à X espace de la marge de gauche, peut importe si déjà quelque chose avant.

    J'avais regardé printf (ici printf "%40s\n") même si je sais que ca ne devait pas être la bonne solution.

    Selon que je n'ai pas de résultat à gauche j'ai un décalage à droite.
    Je n'ai pas trouvé mon bonheur sur la solution à ce problème sur internet.

    je suis sous strawberry 5.24.1


    Nom : perl-decalage-printf.png
Affichages : 236
Taille : 24,5 Ko


    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
    use strict;
    use warnings;
    use feature 'say';
    use Data::Dumper;
    no warnings 'uninitialized';
    use Spreadsheet::Read;
    use Net::Ping::External qw(ping); # NEt::PIng ne fonctionne pas en ICMP avec STRAWBERRY
     
    my $SITE = "$ARGV[0]";
    my $VILLE;
    my $match = 0;
     
    my $book  = ReadData ('15062017_LOXAM_Etat REF CPE_vue CPE.csv', sep => ";");
    my @rows = Spreadsheet::Read::rows($book->[1]);
    shift @rows;
     
    my %HASH_NOMINAL;
    my %HASH_BACKUP;
     
    foreach my $row (@rows) {
    	my ($ID_SITE, $LOOPBACK, $TOPOLOGIE) = @$row[5, 8, 11]; 
    	my @ELEMENTS = qw(ID_SITE LOOPBACK TOPOLOGIE LAN SWITCH190);
    	if ($ID_SITE =~ /\b$SITE\b/) {
    		$match++;
    		my @AGENCE_ID = grep { $_ =~ /\b\d\d/ } split /-/, $ID_SITE;
    		my $OCTET2 = substr($AGENCE_ID[0],0,2);
    		my $OCTET3 = substr($AGENCE_ID[0],2,2);
    		# Si le début est 0, supprimer le 0 pour ne garder que le dernier chiffre.
    		if ( $OCTET2 =~ /^0(\d)/) {
    				$OCTET2 = $1;
    				}
    		if ( $OCTET3 =~ /^0(\d)/) {
    				$OCTET3 = $1;
    				}		
    		### IP  LAN CE ###
    		my $LAN1 = "10.$OCTET2.$OCTET3.237";
    		my $LAN2 = "10.$OCTET2.$OCTET3.238";
    		my $SWITCH190 = "10.$OCTET2.$OCTET3.252";
    		if ($ID_SITE =~ /\s(\w+)$/i) {
    			$VILLE = $1;
    			}
    		my @NOMINAL;
    		my @BACKUP;
    		if ($TOPOLOGIE =~ /nominal/i) {
    			push (@NOMINAL, ($AGENCE_ID[0], $LOOPBACK, $TOPOLOGIE, $LAN1, $SWITCH190));
    			@HASH_NOMINAL{@ELEMENTS} = @NOMINAL;
    			}
    			else {
    			push (@BACKUP, ($AGENCE_ID[0], $LOOPBACK, $TOPOLOGIE, $LAN2, $SWITCH190));
    			@HASH_BACKUP{@ELEMENTS} = @BACKUP;
    			}
    		}
    	}
     
    if ($match eq 0) {
    	print "$SITE INEXISTANT\n";
    	exit;
    }	
     
    printf "%40s\n", "LOCALITE : $VILLE";
    print "ROUTEUR NOMINAL";
    printf "%40s\n", "ROUTEUR SECOURS"; 
     
    check(%HASH_NOMINAL{LOOPBACK}, %HASH_BACKUP{LOOPBACK});
    check(%HASH_NOMINAL{LAN}, %HASH_BACKUP{LAN});
    ping_simple(%HASH_NOMINAL{SWITCH190});
     
    sub check{
    	my $key0 = $_[0];
    	my $value0 = $_[1];
    	my $key1 = $_[2];
    	my $value1 = $_[3];
     
    	{
    	my $p = ping(host => "$value0", count => 3);
    	if ($p eq 1) {
    		print "$key0 $value0 = OK";
    		}
    		else {
    		print "$key0 $value0 = KO";
    		}
    	}
    	{	
    	my $p = ping(host => "$value1", count => 3);
    	if ($p eq 1) {
    		printf "%40s\n", "$key1 $value1 = OK";
    		}
    		else {
    		printf "%40s\n", "$key1 $value1 = KO";
    		}
    	}	
    }
     
    sub ping_simple{
    	my $p = ping(host => "$HASH_NOMINAL{SWITCH190}", count => 2);
    if ($p eq 1) {
    	print "SWITCH $HASH_NOMINAL{SWITCH190} = OK";
    	}
    	else {
    	print "SWITCH $HASH_NOMINAL{SWITCH190} = KO";
    	}
    }
    Merci

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    C'est à la première colonne que tu dois imposer une taille, pas à la deuxième. Si tu imposes une taille à la première colonne la deuxième commencera toujours au même endroit quelque soit le contenu de la première colonne. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("%-40s%s\n", 'ROUTEUR NOMINAL', 'ROUTEUR SECOURS');
    printf("%-40s%s\n", 'LOOPBACK 77.155.46.96 = OK', 'LOOPBACK 77.155.46.95 = OK');
    printf("%-40s%s\n", 'LOOPBACK  = OK', 'LOOPBACK 77.155.199.154 = OK');
    (On ajoute - pour justifier à gauche).

  3. #3
    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
    Exemple sous le debugger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      DB<1> $ville = "toto";
     
      DB<2> printf "%-40s%s\n", $ville, "tutu"
    toto                                    tutu
     
      DB<3> $ville = "Conflans Sainte Honorine";
     
      DB<4> printf "%-40s%s\n", $ville, "tutu"
    Conflans Sainte Honorine                tutu
    Comme tu peux le voir, la seconde colonne est bien alignée bien que le premier champ ait des tailles très différentes.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 198
    Par défaut
    Merci pour vos retours, c'est plus clair maintenant

    voici ce que donne la subroutine

    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
    sub check{
    	my $key0 = $_[0];
    	my $value0 = $_[1];
    	my $key1 = $_[2];
    	my $value1 = $_[3];
     
    	{
    	my $p = ping(host => "$value0", count => 3);
    	if ($p eq 1) {
    		printf "%-40s", "$key0 $value0 = OK";
    		}
    		else {
    		printf "%-40s", "$key0 $value0 = KO";
    		}
    	}
    	{	
    	my $p = ping(host => "$value1", count => 3);
    	if ($p eq 1) {
    		say "$key1 $value1 = OK";
    		}
    		else {
    		say "$key1 $value1 = OK";
    		}	
    	}
    }
    Nom : perl-printf.png
Affichages : 237
Taille : 23,5 Ko

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

Discussions similaires

  1. Afficher texte dans une textbox apres un retour de page
    Par Loukas42 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/01/2011, 11h42
  2. [AC-2003] Afficher un champ texte après activation d'une case à cocher
    Par olivier777 dans le forum IHM
    Réponses: 10
    Dernier message: 05/03/2010, 15h02
  3. [DOM] Afficher du texte après un clic sur une photo
    Par tony7000 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/01/2009, 20h17
  4. afficher un texte après chargement de la page
    Par klintistwood dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/04/2008, 19h01
  5. Un lien où un texte s'affiche dessous après le clic
    Par brunoperel dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/07/2007, 15h55

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