[Perl] sous Unix - Structures

sous Unix - Structures [Perl] - Programmation

Marsh Posté le 01-02-2002 à 17:00:27    

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

Reply

Marsh Posté le 01-02-2002 à 17:00:27   

Reply

Marsh Posté le 01-02-2002 à 17:58:32    

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

Reply

Marsh Posté le 01-02-2002 à 21:01:00    

Reply

Marsh Posté le 01-02-2002 à 22:23:13    

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++;
    }


---------------
Mes News
Reply

Marsh Posté le 01-02-2002 à 22:31:31    

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.


---------------
Mes News
Reply

Marsh Posté le 03-02-2002 à 17:43:22    

Merci beaucoup de ton aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed