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 Calim' Héros (site web personnel) . Évalué à 7.
Voila, désolé, j'suis plus la ===>[]
(sinon il y a peut etre des indexof(char) qui pourrait te permettre de substringuer sur les " ")
[^] # Re: Coupage de string
Posté par Gilles Foucault . Évalué à 0.
+1
# drôle de façons !!!
Posté par kolter (site web personnel, Mastodon) . Évalué à 5.
M.
[^] # Re: drôle de façons !!!
Posté par foulmetal canette (site web personnel) . Évalué à 4.
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
# split
Posté par Pascal Terjan (site web personnel) . Évalué à 6.
# use File::Listing
Posté par polux14 . Évalué à 2.
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 Bashful . Évalué à 2.
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.