portabilité Linux<->Windows : séparateur des chemins de fichiers

portabilité Linux<->Windows : séparateur des chemins de fichiers - Perl - Programmation

Marsh Posté le 08-08-2007 à 10:50:59    

[:zytra] Salut les mongueurs,
 
juste une petite question bête de portabilité :
 
Est-ce qu'un truc de ce genre est portable ?

my $dir = shift;
my $file = shift;
my $path = $dir."/".$file;
open (FILE, "<$path" );


Des rapides recherches sur le Web donnent des résultats contradictoires : la documentation officielle semble dire qu'il faut penser à utiliser "\\" à la place de "/" pour les chemins de fichiers sous Windows, alors qu'ici on me dit que Perl fait la conversion automatiquement en interne :??:
 
Je testerais bien, mais j'ai pas de machine windows à disposition...


---------------
TriScale innov
Reply

Marsh Posté le 08-08-2007 à 10:50:59   

Reply

Marsh Posté le 08-08-2007 à 11:29:46    

Bon, je m'autoréponds après une petite discussion sur BlaBla@OSA :
 
il semblerait que la seule vraie solution portable soit d'utiliser File::Spec. Je vais quand même essayer de trouver une machine windows pour tester si la solution du remplacement "automagique" des séparateurs par Perl marche aussi...


Message édité par franceso le 08-08-2007 à 11:30:13

---------------
TriScale innov
Reply

Marsh Posté le 08-08-2007 à 11:36:02    

Bonjour,  
 
Pour des fonctions de base comme 'open', 'unlink' les séparateurs '/' sont interprétés de façon totalement transparente sous Win32.
Par contre pour des fonctions comme 'system $cde' il faut être très prudent pour le nom de la commande ainsi que pour les optionss, on devient vite non portable

Reply

Marsh Posté le 08-08-2007 à 11:41:36    

merci :jap:
 

pmarion a écrit :

Pour des fonctions de base comme 'open', 'unlink' les séparateurs '/' sont interprétés de façon totalement transparente sous Win32.
Par contre pour des fonctions comme 'system $cde' il faut être très prudent pour le nom de la commande ainsi que pour les optionss, on devient vite non portable


Et quid des bibliothèques additionnelles (genre Image::Magick ou autres)? Peut-on supposer qu'elles n'utilisent que des fonctions de base comme open(), ou bien doit-on prendre des précautions particulières ?
 
Pour ce qui est des 'system', 'exec' ou autres, j'ai déjà pris soin de les éviter pour garantir une meilleure portabilité...


---------------
TriScale innov
Reply

Marsh Posté le 08-08-2007 à 11:48:07    

Pour Image::Magick, ainsi que pour tous les modules propres, il n'y a pas de problème.
 

Reply

Marsh Posté le 08-08-2007 à 11:48:29    

:jap: Merci


---------------
TriScale innov
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed