OVH Cloud OVH Cloud

Problème avec l'interpolation

3 réponses
Avatar
s.Müller
Bonjour,
J'ai un petit problème de compréhension avec l'opérateur apostrophe et
l'interpolation.

Bien qu'il soit écrit qu'il n'y a pas d'interpolation entre les opérateurs '
', le code
$Path = 'C:\Temp\';
retourne l'erreur suivante :
Can't find string terminator "'" anywhere before EOF at ...

Je dois écrire
$Path = 'C:\Temp\\';
pour ne pas avoir d'erreur à la compil et obtenir " C:\Temp\ " dans $Path.

Je trouve étrange d'être obligé de faire un mix entre les opérateurs ' ' et
" " pour écrire cette ligne.

Dans le cas de l'opérateur " ", pas de problème, il suffit d'écrire
$Path = "C:\\Temp\\";
mais est-il possible de désactiver temporairement l'interprétation du
caractère \ et écrire
$Path = "C:\Temp\";
pour obtenir " C:\Temp\ " dans $Path ?

Par avance merci
Stéphane

3 réponses

Avatar
Paul Gaborit
À (at) Tue, 28 Feb 2006 15:03:28 +0100,
"s.Müller" écrivait (wrote):
Bien qu'il soit écrit qu'il n'y a pas d'interpolation entre les opérateurs '
', le code
$Path = 'C:Temp';
retourne l'erreur suivante :
Can't find string terminator "'" anywhere before EOF at ...
Je dois écrire
$Path = 'C:Temp';
pour ne pas avoir d'erreur à la compil et obtenir " C:Temp " dans $Path.


Dans une chaîne entre simple quote, il n'y a effectivement pas
d'interpolation (des variables et des caractères spéciaux). Par
contre, il existe encore un caractère d'échappement (le ) qui ne sert
que pour 'interpoler' le délimiteur et le caractère d'échappement
lui-même. Il n'est pas possible (simplement) de changer le caractère
d'échappement.

Le plus simple, dans l'exemple que vous citez, est d'utiliser / au
lieu de . Depuis longtemps, la libc de Windows (utilisée par Perl)
reconnait aussi bien le que le / comme séparateur.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
JacK
s.Müller wrote:
Bonjour,
J'ai un petit problème de compréhension avec l'opérateur apostrop he et
l'interpolation.

Bien qu'il soit écrit qu'il n'y a pas d'interpolation entre les opé rateurs '
', le code
$Path = 'C:Temp';
retourne l'erreur suivante :
Can't find string terminator "'" anywhere before EOF at ...

Je dois écrire
$Path = 'C:Temp';
pour ne pas avoir d'erreur à la compil et obtenir " C:Temp " dans $ Path.

Je trouve étrange d'être obligé de faire un mix entre les opéra teurs ' ' et
" " pour écrire cette ligne.

Dans le cas de l'opérateur " ", pas de problème, il suffit d'écri re
$Path = "C:Temp";
mais est-il possible de désactiver temporairement l'interprétation du
caractère et écrire
$Path = "C:Temp";
pour obtenir " C:Temp " dans $Path ?

Par avance merci
Stéphane


$Path = "C:/Temp/";


Avatar
s.Müller
Effectivement, je n'avais jamais testé que sous DOS la commande " cd C:/Temp
" fonctionnait !
Merci pour ces infos.

Cordialement
Stéphane

"Paul Gaborit" a écrit dans le message de
news:

À (at) Tue, 28 Feb 2006 15:03:28 +0100,
"s.Müller" écrivait (wrote):
Bien qu'il soit écrit qu'il n'y a pas d'interpolation entre les
opérateurs '
', le code
$Path = 'C:Temp';
retourne l'erreur suivante :
Can't find string terminator "'" anywhere before EOF at ...
Je dois écrire
$Path = 'C:Temp';
pour ne pas avoir d'erreur à la compil et obtenir " C:Temp " dans
$Path.


Dans une chaîne entre simple quote, il n'y a effectivement pas
d'interpolation (des variables et des caractères spéciaux). Par
contre, il existe encore un caractère d'échappement (le ) qui ne sert
que pour 'interpoler' le délimiteur et le caractère d'échappement
lui-même. Il n'est pas possible (simplement) de changer le caractère
d'échappement.

Le plus simple, dans l'exemple que vous citez, est d'utiliser / au
lieu de . Depuis longtemps, la libc de Windows (utilisée par Perl)
reconnait aussi bien le que le / comme séparateur.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>