Précédent   Forum des professionnels en informatique > Autres langages > Perl > Communauté Perl > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, et autres ressources pour la rubrique Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2012, 09h21   #1
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Par défaut Où trouver Perl 5.6 pour Windows ?

Bonjour !

Dans le cadre du changement de nos PC au bureau, on vient de nous coller la version 5.8.8 de Perl d'ActiveState.

Cette version n'a jamais été fonctionnelle avec nos scripts. Ces derniers, au choix :

- ne fonctionnent plus du tout
- fonctionnent mais sont extrêmement lents
- ne savent plus gérer les chemins d'accès de répertoires

Tous ces scripts fonctionnant parfaitement sous Perl 5.6.1, je viens d'aller sur le site d'ActiveState pour télécharger le .msi.

Par de bol, en dehors de la toute dernière version en date, les anciennes versions ne sont disponibles qu'en payant

Comment faire pour avoir une version 5.6.1 pour Windows ?
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h29   #2
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 9 359
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 9 359
Points : 13 732
Points : 13 732
Je trouve que c'est une très très mauvaise idée de chercher à travailler sous Perl 5.6. L'idéal serait que tu installse Perl 5.12 et refasse quelques modifications dans tes programmes si besoin.
__________________
Pensez toujours aux cours, FAQ Perl et la fonction recherchez!!!!!!!!
Lisez les règles du forum Perl.

Aucun problème par MP, merci de poster vos questions dans les sous forums dédiés et rendez vos codes sources lisibles
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h36   #3
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Le soucis, c'est que mon service info n'est pas d'une grande souplesse.

Ils ont installé une v5.8.8 parce que c'est un vieux .msi qu'ils avaient sous la main au moment où ils ont dû installer Perl sur nos postes.

Si je leur demande d'installer une 5.12 à la place, j'ai droit illico au remplissage d'une demande d'achat...

Alors si jamais la 5.12 ne fonctionne pas mieux, ça m'étonnerait fortement qu'ils acceptent avec le sourire de rétrograder en 5.6.1.

Quant aux programmes, on en a environ 50 utilisés au moins de manière hebdomadaire par plusieurs personnes différentes. Tous ces programmes n'ont pas été écrits par mes soins et sérieux, je n'ai pas le temps de tous les tester. Et comme je suis le dernier programmeur Perl de ma boite...

Je ne comprends pas pourquoi un script basique qui tourne habituellement en 5 minutes en 5.6.1 met 40 minutes en 5.8.8 ! Je ne comprends pas davantage pourquoi un chemin du genre "M:\PoleNumerique\AA\Temp" n'est plus reconnu comme un répertoire en 5.8.8 alors qu'en 5.6.1 ça fonctionnait parfaitement.
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h40   #4
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 9 359
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 9 359
Points : 13 732
Points : 13 732
Bah tes remarques me surprennent également car j'ai bossé sous Perl 5.8.8 pendant plusieurs années sans jamais avoir de soucis. Donc tes programmes auraient dû fonctionner, voire mieux fonctionner que sous Perl 5.6.
__________________
Pensez toujours aux cours, FAQ Perl et la fonction recherchez!!!!!!!!
Lisez les règles du forum Perl.

Aucun problème par MP, merci de poster vos questions dans les sous forums dédiés et rendez vos codes sources lisibles
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h45   #5
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Ca ne me surprend pas car il y a 4 ans, lors du précédent changement de bécane, j'avais déjà eu ce soucis.

Le dossier "M:\PoleNumerique\AA\Temp" existe.

Si je fais un test (if -d) sur cette chaine, ça retourne 0 et je n'ai pas de message d'erreur (même avec la pragma warnings).

Différents tests de vérif si répertoire réalisés avec ces chaines :

"M:\PoleNumerique\AA\Temp"
"M:\PoleNumerique\AA\Temp\"
"M:\\PoleNumerique\\AA\\Temp"
"M:\\PoleNumerique\\AA\\Temp\\"
"M:/PoleNumerique/AA/Temp"
"M:/PoleNumerique/AA/Temp/"

Rien ne fonctionne.

Je fais un basique test if -d "M:" et là ça marche.
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h49   #6
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 9 359
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 9 359
Points : 13 732
Points : 13 732
et -e ?
__________________
Pensez toujours aux cours, FAQ Perl et la fonction recherchez!!!!!!!!
Lisez les règles du forum Perl.

Aucun problème par MP, merci de poster vos questions dans les sous forums dédiés et rendez vos codes sources lisibles
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h04   #7
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Je viens de tester ce petit code :

Code :
1
2
3
4
5
6
7
8
use strict;
use warnings;
 
#~ my $rep = "M:\PoleNumerique\AA\Temp\";
my $rep = "M:\\PoleNumerique\\AA\\Temp\\";
 
print (-d $rep ? "OK rep\n" : "NO OK\n");
print (-e $rep ? "OK existe\n" : "NO OK\n");
"M:\PoleNumerique\AA\Temp\" donne :
NO OK
NO OK

"M:\\PoleNumerique\\AA\\Temp\\" donne :
OK rep
OK existe

J'applique la modif du double \\ sur un des scripts de renommage de fichiers et hop : le répertoire mentionné M:\\PoleNumerique\\AA\\Temp\\ n'existe pas.

Bizarrement ET sans modifier mon script, lui demander de vérifier si le dossier C:\toto\pouet\titi\toto existe, il retourne 1.

Alors je crois que la solution va vite être trouvée : je ne touche à rien, je ne demande pas de changement de version de Perl et je laisse les utilisateurs se débrouiller avec le programme : si ça ne marche pas, qu'ils recopient leurs fichiers à renommer ailleurs pour voir si c'est pas mieux.
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h05   #8
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Merci de ton aide Djibril, ça m'a fait plaisir de repasser par ici
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 12h21   #9
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 9 359
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 9 359
Points : 13 732
Points : 13 732
J'ai une autre solution plus propre que j'utilise régulièrement en utilisant File::Spec.
__________________
Pensez toujours aux cours, FAQ Perl et la fonction recherchez!!!!!!!!
Lisez les règles du forum Perl.

Aucun problème par MP, merci de poster vos questions dans les sous forums dédiés et rendez vos codes sources lisibles
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 12h25   #10
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Merci pour l'info.

Je m'y pencherai si jamais j'ai trop d'utilisateurs mécontents

Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 12h31   #11
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 9 359
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 9 359
Points : 13 732
Points : 13 732
Teste ça pour t'amuser :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
 
my @repertoires = (
  'C:\PoleNumerique\AA\Temp',
  'C:/PoleNumerique/AA/Temp',
  "C:/PoleNumerique/AA/Temp",
  "C:\PoleNumerique\AA\Temp",
  "C:\\PoleNumerique\\AA\\Temp",
);
 
foreach ( @repertoires) {
  print "$_\n";
  print -d $_ ? "OK rep\n" : "NO OK\n";
  print -e $_ ? "OK existe\n" : "NO OK\n";
 
  my $rep2 = File::Spec->catdir($_);
  print -d $rep2 ? "OK rep2\n" : "NO OK\n";
  print -e $rep2 ? "OK existe2\n" : "NO OK\n";
 
}
__________________
Pensez toujours aux cours, FAQ Perl et la fonction recherchez!!!!!!!!
Lisez les règles du forum Perl.

Aucun problème par MP, merci de poster vos questions dans les sous forums dédiés et rendez vos codes sources lisibles
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 16h06   #12
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
En compilant ton script, j'ai ces warnings là :

Code :
1
2
3
4
5
6
>perl -c -w test.pl
Unrecognized escape \P passed through at test.pl line 10.
Unrecognized escape \A passed through at test.pl line 10.
Unrecognized escape \T passed through at test.pl line 10.
test.pl syntax OK
>Exit code: 0
Dans les 5 éléments à tester dans ta liste, les chaines de caractère suivantes sont reconnues comme des dossiers :

"C:/PoleNumerique/AA/Temp"
"C:\\PoleNumerique\\AA\\Temp"

Bref, les élements 3 et 5 de la liste sont ok, pas les autres.

Et quand je dis que ça marche, c'est qu'à l'affichage, ça donne ceci :

Code :
1
2
3
4
OK rep
OK existe
OK rep2
OK existe2
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 16h13   #13
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 9 359
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 9 359
Points : 13 732
Points : 13 732
Les warnings viennent de ça : "C:\PoleNumerique\AA\Temp", et c'est normal.
Par contre 'C:/PoleNumerique/AA/Temp', donne quoi ?
__________________
Pensez toujours aux cours, FAQ Perl et la fonction recherchez!!!!!!!!
Lisez les règles du forum Perl.

Aucun problème par MP, merci de poster vos questions dans les sous forums dédiés et rendez vos codes sources lisibles
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 16h20   #14
Membre émérite
 
Inscription : février 2003
Messages : 1 099
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 1 099
Points : 969
Points : 969
Citation:
Envoyé par djibril Voir le message
Par contre 'C:/PoleNumerique/AA/Temp', donne quoi ?
Cela ne fonctionne pas. Les chaines entre simples quotes n'ont pas donné de résultats positifs. Seules celles entre doubles quotes sont ok, sauf l'avant-dernière.

Le truc qui m'embête, c'est que ce matin j'ai testé ce genre de choses sur l'un des scripts à problème et ça n'a rien donné. Simple ou double quote, rien ne fonctionne.

Ce script étant en réalité du Perl/Tk, je me demande s'il n'y a pas de soucis de compatibilité ici aussi ?

Merci pour ton aide et le temps consacré, Djibril !
Arioch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h45.


 
 
 
 
Partenaires

Hébergement Web