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 problème je récupère dans un tableau appelé '@LIST' la commande ls -l $PATH avec '$PATH' le chemin d'un dossier passé en paramètre. Je l'affiche dans un jolie 'foreach' pas de problème. Maintenant il faut que je traite toutes les réponses 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 dernière modification. Mais là je bloque car je trouve pas de commande pour couper chaque string et récupéré les valeurs

j'ai trouvé que substring, mais je vois pas trop comment résoudre mon problème avec, peut-être en récupèrant l'indice dans le string de chaque espace et de le couper, peut-être.

Mais en perl il n'y a pas un moyen de faire un coupage avec un 'awk' par exemple ou un 'grep' comme 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.