portabilité Linux<->Windows : séparateur des chemins de fichiers - Perl - Programmation
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...
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
Marsh Posté le 08-08-2007 à 11:41:36
merci
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. |
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é...
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.
Marsh Posté le 08-08-2007 à 10:50:59
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