Selon Edgar Bonet <guilde@???>:
> Le mercredi 18 janvier, marc.terrier@??? a écrit :
> > J'ai un script en Perl qui doit pouvoir fonctionner sous Windows et
> > sous Linux, et j'aimerais pouvoir détecter la plate-forme utilisée, de
> > façon à lui faire gérer correctement les '/' et les '\' dans les noms
> > de fichiers. Savez-vous comment je pourrais m'y prendre ?
>
> Juste une idée débile comme ça...
>
> if (-f "/bin/sh") { print "Ça ressemble à un Unix\n"; }
Ton idée n'est pas débile ;-), Edgar, en ce sens qu'elle a le mérite de ne pas
faire apparaître de message d'erreur quand on est sous Windows ( contrairement
au « system ( "uname -a" ); » que j'avais essayé, et qui donnait évidemment «
'uname' is not recognized as an internal or external command, operable program
or batch file. »
Ceci étant, l'idée suggérée par Patrice ( $^O ) est encore mieux, puisqu'elle
marche dans tous les cas, sans le moindre message d'erreur ( même dans le cas,
peu probable, il est vrai, où /bin/sh manquerait à l'appel ) :
Windows XP : perl -e 'print $^O' ==> MSWin32
Red Hat Entreprise Linux 3 : perl -e 'print $^O' ==> linux
et même ( cadeau bonux ) :
DEC OSF1 : perl -e 'print $^O' ==> dec_osf
AIX 5.2 : perl -e 'print $^O' ==> aix
Solaris 8 : perl -e 'print $^O' ==> solaris
Elle est pas belle, la vie ? Merci à tous les deux.
--
Marc TERRIER
http://marc.terrier.free.fr