Bonjour,
Bien que le problème soit mis en évidence sur un module je poste ici car il semble s'agir d'initialisation de chemin de fichier.
Je migre de Active_5.12 (32bits) en Strawberry_5.20 (64bits)
J'utilise le module Win32::MediaPlayer
Ce module fonctionne aussi bien en 5.12 qu'en 5.20
Le programme suivant fonctionne parfaitement dans les 2 versions de Perl.
NOUV.pl :
Le problème apparaît lorsque j'utilise Win32::MediaPlayer dans un programme (ESS.pl) beaucoup plus long qui fait appel entre autre à plusieurs API Windows.
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 #!/usr/bin/perl use strict; use warnings; use utf8; use File::Spec; # Gestion des noms des chemins sous tous les OS use Win32::MediaPlayer; # Pour jouer un fichier son my $Time = 0; my $winmm = new Win32::MediaPlayer; my $Repertoire = "E:/_APPLI/Arabe/Ass_1/CDdecoup/LLc_009/"; my $Fic = "Tr_001.mp3"; my $fichier_Trad_Ora = File::Spec->catfile( $Repertoire, $Fic ); $winmm->load($fichier_Trad_Ora); $winmm->play; $winmm->volume(80); $Time = $winmm->length; sleep (4); $winmm->close;
Suivant que je passe à Win32::MediaPlayer un chemin de fichier écrit en dur par moi-même ou un chemin généré par File::Spec et même par File::Spec::Win32, j'ai des comportements différents.
Avec le chemin en dur ça fonctionne toujours, avec un chemin généré, jamais, quelque soit la façon dont je triture le chemin :
Ceci fonctionne toujours, et bien d'autres essais...:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $fichier_mp3 = "E:\\_APPLI\\Arabe\\Ass_1\\CDdecoup\\LLc_009\\FicTitre.mp3"; $fichier_mp3 = 'E://_APPLI//Arabe//Ass_1//CDdecoup//LLc_009//FicTitre.mp3'; ... $winmm->load($fichier_mp3);
Ceci ne fonctionne jamais, et bien d'autres essais...:
même après avoir trituré dans tous les sens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' ); $winmm->load($fichier_mp3);
ou encore :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' ); my @TempArray = split (/\\/, $fichier_mp3); print "ARRAY = @TempArray\n\n"; $fichier_mp3 = join("//", @TempArray);
Je sèche dessus depuis 2 jours,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $fichier_mp3 = File::Spec::Win32->catfile( $Repertoire, 'FicTitre.mp3' ); my @TempArray = split (/\\/, $fichier_mp3); print "ARRAY = @TempArray\n\n"; $fichier_mp3 = join("\\\\", @TempArray);
auriez-vous une idée ?
MERCI d'avance !
Ci-dessous divers essais, ceux qui fonctionnent correspondent aux chemins en dur,
Le dernier qui plante avec un chemin construit avec File::Spec::Win32
Partager