Hello,
voilà, je cherche a effectuer via un script perl un chaine de traitement sur différents fichiers qui se trouvent dans deux répertoires distincts. Pour gagner du temps, je désire utiliser deux threads (un par répertoire).
Mon problème c'est qu'un chdir s'applique à tous les threads, je ne vois donc pas comment traiter simultanément mes deux chaines de traitement dans chacun des deux répertoires. Voici mon script (qui ne fonctionne pas tout à fait donc) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #!/usr/bin/perl use threads::shared; my $usage = "monscriptperl homedir im1 im2"; if ($#ARGV < 0 || $#ARGV > 2) { print "$usage\n"; exit 1; } $dir=$ARGV[0]; @filers = ($ARGV[1],$ARGV[2]); my @threads = (); foreach $filer (@filers) { push (@threads, threads->create (\&thread_func, $filer)); } foreach (@threads) { $_->join(); # blocks until this thread exits } exit(0); sub thread_func { $image=$ARGV[@threads+1]; chdir("$workdir"); $cmd="$process $image"; system ($cmd); }
Voilà, on demander à l'utilisateur deux noms de fichiers qui sont respectivement placés dans deux répertoires et et je veux appliquer ma chaîne de traitement (sous la variable $process) simultanément. Comme vous le savez, le chdir pose problème puisqu'il s'applique à tous les threads. Je débute en perl, mais je n'ai pas trouvé de réponse dans le tutoriaux ni sur le forum.
Merci pour toute aide !
Partager