#!/usr/bin/perl -W # TP synchronisation de fichiers en perl # # Question 1 # # Antoine Miné # 26/01/2007 # lance 'die' seulement si $ARGV[0] n'est pas défini, c'est à dire, si le # script a été lancé sans argument $dir = $ARGV[0] or die "Il me faut un argument!"; # parcours récursif sub parcours { my $dir = shift; # place l'argument de la fonction dans $dir # place dans @files (locale) la liste des fichiers # note: le script s'arrête au premier 'permission denied' opendir(DIR,$dir) or die "Impossible d'ouvrir $dir ($!)"; my @files = readdir(DIR); closedir(DIR); # pour chaque fichier foreach (@files) { next if /^\.\.?$/; # saute . et .. $filename = "$dir/$_"; # calcule le chemin complet # affiche uniquement les fichiers 'normaux' (test -f) if (-f $filename) { print "$filename\n"; } # ouvre récursivement les répertoires (test -d) elsif (-d $filename) { parcours($filename); } } } # on y va parcours($dir);