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 :

[langage] tabulation dans un fichier txt


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Points : 46
    Points
    46
    Par défaut [langage] tabulation dans un fichier txt
    Salut,

    j'écris des infos ds un fichier texte en Perl avec la fonction classique
    Print (FIC "blablabla");

    En gros j'écris ca dans mon fichier txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    7700-Seij	Alcatel7700	192.168.2.149	Montparnasse		3 days, 18:09:57
    OmniSwitch_7700	Alcatel7700	192.168.3.229	DACR		3 days, 19:41:14
    6148-TDR-M	Alcatel6148	192.168.4.155	DACR		4 days, 1:09:33
    5052-StPaul	Gigabit Routing Switch	192.168.201.233	LI		12 days, 14:16:20
    OmniStack 6024 Rue BAREAU	Alcatel6024	126.243.4.146	DACR		19 days, 3:39:07
    6148-TRC-P	Alcatel6148	192.168.0.177	KGFH		19 days, 18:31:29
    6148-BFD-E	Alcatel6148	192.168.0.179	ATCR		19 days, 18:48:48
    6300-ARD-M	Alcatel6300	192.168.0.174	TACR		19 days, 21:05:02
    Mont-MO3-2	Alcatel6124	192.168.0.127	Montparnasse		21 days, 0:42:50
    Mont-MO2-1	Alcatel6124	192.168.0.128	Montparnasse		21 days, 0:46:51
    avec une boucle pour chaque ligne du genre:

    print (FIC $info1."\t".$info2."\t".$info3."\t".$info4."\t".info5."\n");

    le probleme, c que tous les înfos1 n'ont pas le même nbre de caractère et de même pr les autres info2,3,...
    D'où un fichier txt à l'arrivée difficilement lisible...

    Oui, je sais c'est un petit problème vraiment con mais je ne vois pas de solution...

    Si qqn avait une suggestion, ca serait vraiment sympa!

    TigreRouge

  2. #2
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Si tu veux générer un beau rapport en 'ASCII art', tu peux utiliser l'imprimation avec des formats. C'est un vieux truc hérité des langages comme FORTRAN et COBOL.

    Dans ton cas ça sera quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    format FIC =
    @<<<<<<<<	@<<<<<<<<
    $info1,		$info2
    .
     
    while (...) {
      write FIC;
    }
    La réalisation classique est décrite en man perlform (http://www.perldoc.com/perl5.8.4/pod/perlform.html) et plus moderne -- en http://search.cpan.org/~dconway/Perl6-Form-0.04/Form.pm (le dernier exige le module Perl6::Form).

    En même tepms, des fichiers séparés avec "\t" sont moins vastes et plus faciles à parser. Peut-être, il te suffit d'augmenter l'espace de tabulation dans le logiciel avec lequel tu lis ces fichiers?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    ok, merci pr le tuyau, je vais regarder.
    Sinon, j'ai du recourir à une feinte encore pour avoir de belles colonnes.

    au lieu de ca :
    print (FIC2 $nom[$i]." ".$modele[$i]."\t".$ip[$i]."\t".$site[$i]."\t".$desc[$i]."\t".$sysuptime[$i]."\n" );
    j'ai mis ca:

    print (FIC $nom[$i]);
    @hap=0;
    @hap=split(//,$nom[$i]);
    while (@hap<=30)
    {
    print (FIC " ");
    $hap[@hap]="";
    }

    print (FIC $modele[$i]);
    @hap=0;
    @hap=split(//,$modele[$i]);
    while (@hap<=30)
    {
    print (FIC " ");
    $hap[@hap]="";
    }

    print (FIC $ip[$i]);
    @hap=0;
    @hap=split(//,$ip[$i]);
    while (@hap<=20)
    {
    print (FIC " ");
    $hap[@hap]="";
    }

    etc...
    En gros, je compte le nombre de caractères et j'ajoute des espaces pr atteindre un compte identique sur toutes les lignes. Je sais, ce n'est pas très propre comme code (lol c le moins qu'on puisse dire) mais bon, ca a le mérite de donner un bon rendu et pour le moment, je vais m'en contenter en attendant de regarder ton truc dmitry

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

Discussions similaires

  1. Ouvrir et écrire dans un fichier .txt en T-SQL
    Par joul's dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/10/2008, 21h04
  2. Remplacement dans un fichier .txt
    Par sebtoto62 dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2005, 13h15
  3. Date dans un fichier txt
    Par cali1983 dans le forum C++
    Réponses: 6
    Dernier message: 23/05/2005, 17h35
  4. Réponses: 10
    Dernier message: 05/10/2004, 11h28
  5. [langage] Susbstitution dans un fichier
    Par GLDavid dans le forum Langage
    Réponses: 6
    Dernier message: 08/09/2003, 15h16

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