Question programmation PERL
Fermé
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
-
3 août 2006 à 14:19
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 3 août 2006 à 20:25
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 3 août 2006 à 20:25
A voir également:
- Question programmation PERL
- Application de programmation - Guide
- Programmation - Guide
- Denon perl pro test - Accueil - Audio
- Programmation logo tortue télécharger - Télécharger - Études & Formations
- Programmation binaire - Guide
5 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 août 2006 à 16:24
3 août 2006 à 16:24
Salut,
Y a-t-il un moyen de faire en sorte que lorsque je lis mon fichier TXT il devienne pareil à mon tableau @FERIE.
En principe oui. Fait voir le fichier pour pouvoir repondre. Mets le sur https://www.cjoint.com/
Et pourquoi pas un hachage avec la date et le nom de jour férie?
lami20j
P.S. j'ai une heure de RER, je peux en profiter ;)
Et si tu diras exactement ce que tu veux obtenir peut être on pourra faire mieux. Bien sûr si ça t'interesses. Merci
Y a-t-il un moyen de faire en sorte que lorsque je lis mon fichier TXT il devienne pareil à mon tableau @FERIE.
En principe oui. Fait voir le fichier pour pouvoir repondre. Mets le sur https://www.cjoint.com/
Et pourquoi pas un hachage avec la date et le nom de jour férie?
lami20j
P.S. j'ai une heure de RER, je peux en profiter ;)
Et si tu diras exactement ce que tu veux obtenir peut être on pourra faire mieux. Bien sûr si ça t'interesses. Merci
lavm01
Messages postés
69
Date d'inscription
vendredi 16 juin 2006
Statut
Membre
Dernière intervention
5 octobre 2012
3 août 2006 à 18:59
3 août 2006 à 18:59
Bonjour, le fichier est sur le lien https://www.cjoint.com/?idsU7EpegT
En fait, ce que je veux faire exactement est de lire un fichier texte sous la forme:
2006-01-02
2005-01-03
2006-04-14
2006-04-17
2006-05-22
2006-06-21
2006-06-30
2006-08-02
2006-10-09
2006-12-22
2006-12-25
2006-12-26
2006-12-29
2007-01-01
2007-01-02
ce fichier contient les jours fériés 2006 et le début de l'année 2007 (mais il se peut que j'en mettre plus). Ensuite prendre la date du jour et venir la comparer avec les dates de mon fichiers texte. Si la date du jour correspond à une des dates de mon fichiers texte et bien j'affecte une valeure à une variable (Ex: $jf='jour férié';).Donc au début de mon programme j'exécute la sous routine de vérification pour la date et si la variable $jf est égale à jour férié et bien je quitte le programme donc aucune exécution. C'est un peu long à expliquer pourquoi je dois faire cela mais il faut que je réussise à le faire.
Merci de votre réponse.
En fait, ce que je veux faire exactement est de lire un fichier texte sous la forme:
2006-01-02
2005-01-03
2006-04-14
2006-04-17
2006-05-22
2006-06-21
2006-06-30
2006-08-02
2006-10-09
2006-12-22
2006-12-25
2006-12-26
2006-12-29
2007-01-01
2007-01-02
ce fichier contient les jours fériés 2006 et le début de l'année 2007 (mais il se peut que j'en mettre plus). Ensuite prendre la date du jour et venir la comparer avec les dates de mon fichiers texte. Si la date du jour correspond à une des dates de mon fichiers texte et bien j'affecte une valeure à une variable (Ex: $jf='jour férié';).Donc au début de mon programme j'exécute la sous routine de vérification pour la date et si la variable $jf est égale à jour férié et bien je quitte le programme donc aucune exécution. C'est un peu long à expliquer pourquoi je dois faire cela mais il faut que je réussise à le faire.
Merci de votre réponse.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 août 2006 à 19:22
3 août 2006 à 19:22
Re,
je crois qu'on c'est déjà vu perl tk
Pendant que je vais regarder ton fichier voilà quelque conseils
je crois qu'on c'est déjà vu perl tk
Pendant que je vais regarder ton fichier voilà quelque conseils
#!/usr/bin/perl # # à utiliser dans le script; les messages d'erreurs ou warnings nous peuvent aider # use warnings;use strict; # on peut convenir que j veut dire jour, on evite d'écrire beaucoup # aa pour année et mm pour mois # en revanche on mets des commentaries pour ne pas oublier (ça sers pour la maintenace) # my $jsec = 0; my $jf = "Non Ferie"; my $caldat = time() - $jsec; # si tu n'as pas besoin que de jour, mois et année tu peux # utiliser une tranche # my ($j,$mm,$aa) = (localtime)[3,4,5] # my ($s,$m,$h,$mj,$mm,$aa,$wj,$yj,$isdst) = localtime($caldat); #$wday=$wday; cette ligne sers à quoi? # a eviter des noms des variables en majuscules my $rtj=(qw(Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi))[$wday]; my $aa += 1900; my $mm = sprintf("%02d", $mon+1); # Convert to 2-digit 1-based $mday. my $mj = sprintf("%02d", $mday); # Convert to 2-digit $mday. # on va utiliser d au lieu de date my $d1 = "$aa-$mm-$mj"; open TL, "$fichtolist" or die "E/S : $!\n"; # à retourné une execptions si problème avec le fichier my @cvectolist=<TL>; close(TL); my @ferie = qw( 2006-01-02 2005-01-03 2006-04-14 2006-04-17 2006-05-22 2006-06-23 2006-06-30 2006-09-04 2006-10-09 2006-12-22 2006-12-25 2006-12-26 2006-12-29 2007-01-01 2007-01-02 X ); # ce n'est pas mieux comme ça? foreach my $jferie ( @cvectolist ) { #print "Le jferie:$jferie et la DATE1:$DATE1\n"; if ( $jferie eq $d1 ) { print "je suis dans le eq\n";# il manque quelque chose ici $jf = "Ferie"; $d1 = "$year-$mon-$mday"; } } __END__ ce n'est pas un code opérationnel je me suis permit de te donner quelque conseils pour écrire ton code A la place d'écrire autant de my tu peux declaré les variables en utilisant une liste my ($var1, $var2,.....) my (@t1, @t2,....) my (%h1, %h2, ....) A toi de voir. dans ton code et ne le prends pas mal que je dit çalami20j
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 août 2006 à 20:02
3 août 2006 à 20:02
Salut,
j'ai remplacé dans ton fichier 2006-08-02 avec 2006-08-03 pour tester.
Ca te va comme ça?
j'ai remplacé dans ton fichier 2006-08-02 avec 2006-08-03 pour tester.
Ca te va comme ça?
#!/usr/bin/perl # use warnings;use strict; my ($j,$m,$a) = (localtime)[3..5]; my $jf; $a += 1900; $m = sprintf ( "%02d", $m + 1 ); $j = sprintf ( "%02d", $j ); my $jj = "$a-$m-$j"; open FERIE, "ferie.txt" or die "E/S : $!\n"; while ( <FERIE> ) { $jf = $_ if $_ =~ /$jj/; } print "$jf";lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 août 2006 à 20:25
3 août 2006 à 20:25
Re,
au lieu de
au lieu de
while ( <FERIE> ) { $jf = $_ if $_ =~ /$jj/; } print "$jf";mets
while ( <FERIE> ) { chomp; $jf = $_ if $_ eq $jj; } print $jf,"\n";lami20j