Forum Programmation.perl Coupage de string

Posté par  .
Étiquettes : aucune
0
3
mai
2005
Bonjour tout le monde,

Je début le perl, j'ai lu toutes les questions sur le forum perl, et je ne trouve pas la réponse à ma question.

Voila mon petit probleme je recupere dans un tableau apellé '@LIST' la commande `ls -l $PATH` avec '$PATH' le chemin d'un dossier passé en parametre. Je l'affiche dans un jolie 'foreach' pas de probleme. Maitenant il faut que je traite toutes les reponse de la commande une a une.

Les valeures stockées dans mon tableau sont du genre :

-rwxr-xr-x 1 root root 588 May 1 13:13 ChangeLog
-rwxr-xr-x 1 root root 631 May 1 13:13 INSTALL
-rwxr-xr-x 1 root root 17719 May 1 13:13 LICENCE
-rwxr-xr-x 1 root root 963 May 1 13:13 README
-rwxr-xr-x 1 root root 1396 May 1 13:13 install
-rwxr-xr-x 1 root root 24358 May 1 14:08 nux-XtoMP3orOGG
-rwxr-xr-x 1 root root 2476 May 1 13:13 nux-XtoMP3orOGG.1

et je voudrais séparé toutes les infos genre la taille le nom et la derniere modification. Mais là je bloque car je trouve pas de commande pour couper chaques string et recuperé les valeurs
j'ai trouvé que substring, mais je vois pas trop comment résoudre mon probleme avec, peut etre en recuperant l'indice dans le string de chaque espace et de le couper, peut etre.

Mais en perl il n'y a pas un moyen de faire un coupage avec un 'awk' par exmple ou un 'grep' commme avec la programmation bash.

Merci d'avance pour votre aide.

Bash'
  • # Coupage de string

    Posté par  (site web personnel) . Évalué à 7.

    Un string ca ce coupe pas, ca s'arrache avec les dents.

    Voila, désolé, j'suis plus la ===>[]

    (sinon il y a peut etre des indexof(char) qui pourrait te permettre de substringuer sur les " ")
  • # drôle de façons !!!

    Posté par  (site web personnel, Mastodon) . Évalué à 5.

    je comprend pas pkoi tu passes par "ls -l", il semble que tu veuille recupérer certaines infos que l'on trouve en faisant cette commande, alors pkoi ne pas utiliser les fonctions natives perl pour faire ça plutot que de découper une chaine (ça evitera, il me semble un grand nombre d'ereur !!) !!!!


    M.
  • # split

    Posté par  (site web personnel) . Évalué à 6.

    Le plus simple c'est d'utiliser split je pense, sinon tu fait une regexp pour récupérer les morceaux qui t'intéressent.
  • # use File::Listing

    Posté par  . Évalué à 2.

    Pour faire ca, il y a File::Listing (perldoc File::Listing)
    foreach my $entry (parse_dir(`ls -l $path`))
    {
    my ($name, $type, $size, $mtime, $mode) = @$entry;
    }


    Sinon, un simple opendir() puis stat sur chaque fichier:
    opendir D, $dir or die();
    my @liste = grep { !/^\.{1,2}$/ && -r "$dir/$_" } readdir(D);
    closedir D;
    foreach(@liste)
    {
    my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat("$dir/$_");
    }
  • # meri

    Posté par  . Évalué à 2.

    Merci pour vos reponse.

    Je vais plutot utilisé la méthode 'use File::Listing' ou celle avec 'stat()' car elle me parait plus appropriée car le probleme avec 'split' et les autres je risque de rencontrée des erreurs avec un nom de fichier avec des espace.

    Bash'

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.