Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Debutant] Inclure un script dans un autre script

27 réponses
Avatar
Vincent Hiribarren
Bonjour à tous,

j'ai une question assez simple : j'aimerai inclure le contenu d'un
script perl, dans un autre script perl, un peu comme avec un
#include en langage C, ou require() en php.

Comment puis-je faire cela ?

J'ai bien sur parcouru la doc en ligne de perl, cependant, j'ai un
gros probleme avec : je trouve qu'il est parfois assez dur d'y trouver
une information precise, comme ma question au-dessus.

J'y trouve bien potentiellement des solutions à base de créations de
modules perl, mais j'aimerai éviter ça, ne voulant pas forcément
inclure des fonctions, mais plutôt définir des variables globales dans
un fichier externe au fichier principal.

Merci d'avance pour vos réponses.

7 réponses

1 2 3
Avatar
Jean-Michel Hiver
J'avoue qu'une fonction du genre 'global' avec

global $toto ;

qui rendrait $toto global au programme *entièrement* serait bien plus
naturel (et donc par extension bien plus perlien) à utiliser.




Desole d'intervenir un peu tard dans le fil...

Si tu veux une variable 'globale' accessible partout, tu peux la mettre
dans la table des symboles:

$::MY_VAR = 'hello';

A partir de la tu peux acceder a $::MY_VAR de partout. J'ai decouvert ca
en matant le source du projet bugzilla.

Sinon c'est quand meme plus propre AMHA de definir une variable globale
dans son package et d'acceder a la variable en prefixant avec le
package, i.e.

package MyPackage;
our $FOO = 'bar';

package main;
print $MyPackage::FOO;

D'autre part, si tu veux faire de la programmation CGI avec
Apache::Registry, tu t'evitera beaucoup de maux de tetes en localisant
tes variables globales au debut du programme.


Jean-Michel.


Avatar
Patrice Karatchentzeff
Jean-Michel Hiver writes:

[...]

Si tu veux une variable 'globale' accessible partout, tu peux la
mettre dans la table des symboles:

$::MY_VAR = 'hello';

A partir de la tu peux acceder a $::MY_VAR de partout. J'ai decouvert
ca en matant le source du projet bugzilla.


excellentissime... je ne connaissais pas.

Sinon c'est quand meme plus propre AMHA de definir une variable
globale dans son package et d'acceder a la variable en prefixant avec
le package, i.e.


C'est plus propre mais c'est lourd...

[...]

D'autre part, si tu veux faire de la programmation CGI avec
Apache::Registry, tu t'evitera beaucoup de maux de tetes en localisant
tes variables globales au debut du programme.


Non, justement, la requête des gens qui demandent de pouvoir
globaliser une variable à un programme est justement de pouvoir écrire
un fichier *à part* dans lequel on collerait toutes les variables...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       

Avatar
jl_morel
Dans l'article , a dit...

Bonjour à tous,

j'ai une question assez simple : j'aimerai inclure le contenu d'un
script perl, dans un autre script perl, un peu comme avec un
#include en langage C, ou require() en php.

Comment puis-je faire cela ?



Utilisez le module Filter::Include

http://theoryx5.uwinnipeg.ca/CPAN/data/Filter-Include/Filter/Include.html

Il permet d'inclure un fichier dans un script avant la compilation.

Par exemple, le fichier 'myvar.inc' comprenant les deux lignes :

my $v="Bonne année à tous !";
my @b=qw/ mais ou et donc or ni car /;

est inclus dans le script suivant :

#!/usr/bin/perl -w
use strict;
use Filter::Include;

include "myvar.inc";

$,="n";
print $v, @b;

__END__

HTH


--
J-L.M.

Avatar
Jean-Michel Hiver
Sinon c'est quand meme plus propre AMHA de definir une variable
globale dans son package et d'acceder a la variable en prefixant avec
le package, i.e.


C'est plus propre mais c'est lourd...


Oui mais au moins tu sais d'ou ca vient... D'une maniere generale les
fonctions et les variables exportes je trouve ca beurk. Je dis ca parce
que je me suis inflige cette erreur moi meme...


D'autre part, si tu veux faire de la programmation CGI avec
Apache::Registry, tu t'evitera beaucoup de maux de tetes en localisant
tes variables globales au debut du programme.


Non, justement, la requête des gens qui demandent de pouvoir
globaliser une variable à un programme est justement de pouvoir écrire
un fichier *à part* dans lequel on collerait toutes les variables...


Je voulais dire 'localisant' dans le contexte de:

local $::MY_VAR = undef;

Cordialement,
Jean-Michel.


Avatar
Frantz
Vincent Hiribarren écrivait
news::

Bonjour à tous,

j'ai une question assez simple : j'aimerai inclure le contenu d'un
script perl, dans un autre script perl, un peu comme avec un
#include en langage C, ou require() en php.

Comment puis-je faire cela ?

J'ai bien sur parcouru la doc en ligne de perl, cependant, j'ai un
gros probleme avec : je trouve qu'il est parfois assez dur d'y trouver
une information precise, comme ma question au-dessus.

J'y trouve bien potentiellement des solutions à base de créations de
modules perl, mais j'aimerai éviter ça, ne voulant pas forcément
inclure des fonctions, mais plutôt définir des variables globales dans
un fichier externe au fichier principal.

Merci d'avance pour vos réponses.


exemple de fichier utliser par require.


Programme Main
require "bidule.pl";
&Bidule();



fichier bidule.pl
sub Bidule {


.....
}
1;

Avatar
Xavier Maillard
on 18 jan 2004, frantz wrote:

exemple de fichier utliser par require.

programme main
require "bidule.pl";
&bidule();

fichier bidule.pl
sub bidule {

.....
}
1;


Ou encore:

do 'bidule.pl';

--
Xavier Maillard
http://www.gnu-rox.org/~zedek/cgi-bin/wiki.pl

Avatar
Xavier Maillard
On 21 Jan 2004, Xavier Maillard wrote:

on 18 jan 2004, frantz wrote:

exemple de fichier utliser par require.

programme main
require "bidule.pl";
&bidule();

fichier bidule.pl
sub bidule {

.....
}
1;


Ou encore:

do 'bidule.pl';


Bon je réponds ici à une question que j'ai reçu en privé. La question
était: est-ce que l'instruction do utilise require ou non.

La réponse est non. 'do' est un autre moyen d'écrire

eval `cat bidule.pl`;

En gros do éxecute le contenu du fichier bidule.pl.

Contrairement à 'use' ou 'require', 'do' ne fait pas de gestion
d'erreur et il est plus "difficile" de savoir si un problème a eu lieu
pendant le "sourcing" du fichier.

Donc je recommande l'utilisation de 'do' pour des fichiers de
configurations.

Pour le reste (chargement de module, fonctions,...) 'use' ou 'require'
sont plus que recommandés.

--
Xavier MAILLARD (GnuPG: 1024D/1E028EA5)
EmacsOS user (http://emacsfr.org)
APRIL (http://www.april.org)


1 2 3