Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2778 connectés 

 


Dernière réponse
Sujet : [Perl] sous Unix - Structures
manegarm Merci beaucoup de ton aide

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
manegarm Merci beaucoup de ton aide
R@NNIS voici un example du perlfaq5 de perl.
 
Comment manipuler un fichier avec des enregistrements de longueur fixe?
 
   Le  plus  efficace  est  d'utiliser pack() et unpack(). C'est plus rapide que d'utiliser substr() sur de nombreuses, nombreuses
   chaînes. C'est plus lent pour seulement quelques unes.
 
   Voici  un  morceau de code démontrant comment décompiler et recompiler ensuite des lignes formattées selon un schéma donné, ici
   la sortie du programme ps, version Berkeley:
    # exemple de ligne:
    #   15158 p5  T      0:00 perl /home/ram/bin/scripts/now-what
    $PS_T = 'A6 A4 A7 A5 A*';
    open(PS, "ps|" );
    print scalar <PS>;
    while (<PS> ) {
        ($pid, $tt, $stat, $time, $command) = unpack($PS_T, $_);
        for $var (qw!pid tt stat time command!) {
            print "$var: <$$var>\n";
        }
        print 'line=', pack($PS_T, $pid, $tt, $stat, $time, $command),
                "\n";
    }
 
   Nous  avons  utilisé  $$var  d'une  façon  défendue  par  use  strict 'refs'. En effet, nous promouvons une chaîne au statut de
   référence  sur  une  variable scalaire par le biais d'une référence symbolique. C'est justifié dans des petits programmes, mais
   supporte  mal  l'utilisation  intensive.  D'autre  part,  cela ne fonctionne qu'avec des variables globales, par opposition aux
   lexicales.
R@NNIS open(WTMP , $file);
/* ouverture du fichier */
 
$i = 0;
 
while (sysread(WTMP, $buf, 36))
    {
        ($wtmp[$i]{tty} , $wtmp[$i]{name} , $wtmp[$i]{host} , $wtmp[$i]{time}) = unpack('A8A8A16L4', $buf); /* regarde les options de unpack pour ca la je cherchais des champs specifiques :) */  
        $i++;
    }
Suri merci :D
manegarm Ok, j'ai reussi a trouve comment on lit une structure...
Un petit unpack en binmode a l'air de marcher
Le probleme est que je n'arrive pas a bien recuperer les donnees...
manegarm Je voudrais lire dans le fichier /var/adm/wtmp les structures concernant les derniers login... Comment faire ?
Comment lit-on une structure ?
 
merci d'avance

Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR