OVH Cloud OVH Cloud

use vars qw ???

5 réponses
Avatar
ecureuil
Bonjour,

J'aimerai comprendre l'usage de "use vars qw"
Dans quel cas on utilise cela....

use vars qw (
$param1
$param2
$param3
);

Merci pour vos lumières
anne

5 réponses

Avatar
Nicolas George
"ecureuil" wrote in message <424a90a3$0$12949$:
J'aimerai comprendre l'usage de "use vars qw"
Dans quel cas on utilise cela....

use vars qw (
$param1
$param2
$param3
);


Il faut décomposer : d'abord, le qw met les mots entre guillemets, donc ceci
est équivalent à :

use vars '$param1', '$param2', '$param3';

Ensuite, ceci est équivalent à déclarer ces trois variables avec our :

our ($param1, $param2, $param3);

Dans les versions récentes de perl, l'usage de use vars est déprécié, il me
semble, au profit de our, et my dans les cas où il est plus adapté.

Avatar
Emmanuel Florac
Le Wed, 30 Mar 2005 12:17:55 +0000, Nicolas George a écrit :


Dans les versions récentes de perl, l'usage de use vars est déprécié,
il me semble, au profit de our, et my dans les cas où il est plus
adapté.


C'est effectivement ce qui est écrit dans le camel book 3e édition.
Cependant je trouve use vars plus clair :)

--
L'esprit qu'on veut avoir gâte celui qu'on a.
Jean-Baptiste Louis Grisset.

Avatar
Nicolas George
Emmanuel Florac wrote in message
:
Cependant je trouve use vars plus clair :)


Tu peux parfaitement écrire :

my ($foo, $bar, $baz);
our ($foobar, $bazqux);

exactement là où tu aurais écrit :

use vars qw($foo $bar $baz $foobar $bazqux);

D'un point de vue clareté, c'est à mon avis équivalent, et ça permet de
faire la distinction entre les my et les our, ce qui est une bonne chose
pour la propreté du code.

Avatar
Mathieu Arnold
Nicolas George écrivait:
Emmanuel Florac wrote in message
:

Cependant je trouve use vars plus clair :)



Tu peux parfaitement écrire :

my ($foo, $bar, $baz);
our ($foobar, $bazqux);


use vars qw($foo $bar $baz $foobar $bazqux);

D'un point de vue clareté, c'est à mon avis équivalent, et ça permet de
faire la distinction entre les my et les our, ce qui est une bonne chose
pour la propreté du code.


Je ne suis pas vraiment d'accord, my, our et vars ne font pas la même
chose, my crée une variable locale au bloc, our déclare une variable
globale au bloc, et vars déclare une variable globale au paquet en cours.

--
Mathieu Arnold


Avatar
Jérémy JUST
On Fri, 01 Apr 2005 10:13:12 +0200
Mathieu Arnold <news+ wrote:

our déclare une variable globale au bloc, et vars déclare une variable
globale au paquet en cours.


Pour « our », ce n'est pas vraiment ça:

$ perldoc -f our
An "our" declaration declares a global variable that will
be visible across its entire lexical scope, even across
package boundaries. The package in which the variable is
entered is determined at the point of the declaration.



Il existe une (petite) différence entre « our » et « use vars », mais
ce n'est pas celle-ci (je te laisse lire le reste de la doc).

--
Jérémy JUST