Question

Je dois obtenir les noms de répertoire à partir du chemin passé au script Perl comme argument de l'exécution. Voici le code que je utilise:

$command ="cd $ARGV[0]";
system($command);

$command="dir /ad /b";
system($command);
@files=`$command`;

Mais elle retourne toujours les noms de répertoire dans le répertoire à partir duquel je suis en cours d'exécution de ce script Perl. En bref, comment puis-je obtenir les noms de répertoire à partir d'un répertoire cible dont le chemin est transmis à ce script Perl?

Était-ce utile?

La solution

Cela devrait également travailler
$command = "dir /ad /b $ARGV[0]" ;

Autres conseils

en juger par ce que vous essayez de faire dans votre poste de question

$dir = $ARGV[0];
chdir($dir);
while(<*>){
 chomp;
 # check for directory;
 if ( -d $_ ) {
    print "$_\n" ;
 }
}

sur la ligne de commande

c:\test> perl myscript.pl c:\test

Il existe d'autres méthodes de faire une liste de répertoire. Voir ces documents de

  1. perldoc -f opendir , perldoc -f readdir

  2. perldoc perlopentut

  3. perldoc -f glob

  4. perldoc perlfunc (voir les opérateurs pour tester des fichiers. -x, -d , -f etc)

Votre problème est que la course « cd » via « système » ne change pas le répertoire de travail du processus de Perl. Pour ce faire, utilisez la fonction "chdir":

chdir($ARGV[0]);

$command="dir /ad /b";
system($command);
@files=`$command`;
scroll top