Bonjour,
J'ai testé plusieurs façon mais impossible pour moi de faire ce que je veux
J'ai une liste de 15 éléments et à la fin du script il m'en donne un aléatoirement.
Jusqu'ici tout va bien.
Mais je veux qu'à la seconde exécution il m'en sorte un autre non plus sur les 15, mais sur les 15 moins celui qu'il ma trouvé et ainsi de suite
Pour ainsi avoir vraiment un aléatoire.
Et une fois arrivé au bout il doit me prévenir qu'il n'est plus possible de le faire
Voici mon fichier source:
Et voici mon script
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 TST0000080454.mpg TST0000052063.mpg TST0000080489.mpg TST0000080510.mpg TST0000052660.mpg TST0000000386.mpg TST0000080006.mpg TST0000027278.mpg TST0000059243.mpg TST0000051841.mpg TST0000052030.mpg TST0000002015.mpg TST0000052450.mpg TST0000080074.mpg TST0000069883.mpg
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 #!/usr/bin/perl -w # Purpose: Random Script use strict; use warnings; use File::Copy; use File::Find; # ************************************************************ # Calcul du temps - #60*60*24*0 = Aujourd'hui # Aujourd'hui my $temps = time - 60*60*24*0; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($temps); if($sec < 10) {$sec = "0" . $sec;} if($min < 10) {$min = "0" . $min;} if($hour < 10) {$hour = "0" . $hour;} if($mday < 10) {$mday = "0" . $mday;} $year+=1900; $mon++; if($mon < 10) {$mon = "0" . $mon;} my $today = $mday.'-'.$mon.'-'.$year; my $jobs_date = $year.$mon.$mday; my $DATE_FR_SLASH = $mday."/".($mon)."/".($year)."|".$hour.":".$min.":".$sec; print $DATE_FR_SLASH."\n"; #************************************************************ # GlobalVariables my $mystere; my $ligne; my $nbligne; my $film; my %hash; my @tab; my $MYSTERE_DIR="/archi/tmp/"; my $LOG_DIR="/archi/tmp/"; my $LOG_FILE="fm_ingest.log"; my $FILM_MYSTERE="fm_liste_aleatoires.csv"; #************************************************************ # Script Starting... open (TOP,"<$MYSTERE_DIR$FILM_MYSTERE") or die "Message : TOP $!\n"; while($ligne=<TOP>) { chomp $ligne; # Suppréssion des rétours chariots $_=$ligne; # Initialisation de la variable par défaut if(/TST/) # Si le fichier est TST { @tab=split(/;/,$ligne); # On split les données dans un tableau $film=$tab[0]; # On récupère le nom du fichier $nbligne=keys(%hash)+1; # On compte le nombre d'élément if(! $hash{$film}) # Si n'existe pas dans le hash { $hash{$film}=1; # On ajoute dans le hash } else # Sinon on affiche la présence d'un doublon { print "Doublon: ".$film."\n"; } } } close (TOP) or die "Message : $!\n"; @tab=keys %hash; # Affecte l'ensemble des clés à un tableau $mystere=$tab[int rand(@tab)]; # Random de la clé pour avoir le contenu open (FILE,">>$LOG_DIR$LOG_FILE") or warn "Message : $!\n"; print FILE "Ingest Date: ".$DATE_FR_SLASH." | ".$mystere." | "."\n"; print "Ingest Date: ".$DATE_FR_SLASH." | ".$mystere." | "."\n"; close (FILE) or warn "Message : $!\n"; #************************************************************ # Ending... __END__
Partager