OVH Cloud OVH Cloud

2 scripts qui utilisent une même librairie

2 réponses
Avatar
Edwin Vancleef
Je n'arrive pas à faire quelque chose d'incroyablement classique : 2 scripts
qui utilisent la même librairie.

Extrait du script 1 : use lib "/repertoire"; use MaLib;
Extrait du script 2 : use lib "/repertoire"; use MaLib;

Supposons que je file mes 2 scripts et ma librairie à un utilisateur. Le but du
jeu est qu'il arrive à faire marcher les 2 scripts.

Voici les règles du jeu :

Règle 1 : L'utilisateur à qui j'ai donné les fichiers ne connait rien à perl.
Il est interdit de lui dire de regarder le code ou de modifier les lignes qu'il
y a dedans. Par contre, il est capable d'éditer des fichiers de configuration,
ou faire des manipulations d'installation...

Règle 2 : L'utilisateur va mettre les fichiers où il veut, et pas à un endroit
qu'on aura décidé.

Etant donné ces règles, on peut déjà dire que mes scripts ne fonctionneront
pas, puisqu'ils chercheront MaLib dans "/repertoire", alors que l'utilisateur
va fourrer la lib n'importe où...

2 réponses

Avatar
Papo
regarde FindBin

use FindBin;
use lib "$FindBin::Bin/../lib";
ouuse FindBin qw($Bin);
use lib "$Bin/../lib";Pascal


"Edwin Vancleef" a écrit dans le message de
news:
Je n'arrive pas à faire quelque chose d'incroyablement classique : 2
scripts
qui utilisent la même librairie.

Extrait du script 1 : use lib "/repertoire"; use MaLib;
Extrait du script 2 : use lib "/repertoire"; use MaLib;

Supposons que je file mes 2 scripts et ma librairie à un utilisateur. Le
but du
jeu est qu'il arrive à faire marcher les 2 scripts.

Voici les règles du jeu :

Règle 1 : L'utilisateur à qui j'ai donné les fichiers ne connait rien à
perl.
Il est interdit de lui dire de regarder le code ou de modifier les lignes
qu'il
y a dedans. Par contre, il est capable d'éditer des fichiers de
configuration,
ou faire des manipulations d'installation...

Règle 2 : L'utilisateur va mettre les fichiers où il veut, et pas à un
endroit
qu'on aura décidé.

Etant donné ces règles, on peut déjà dire que mes scripts ne
fonctionneront
pas, puisqu'ils chercheront MaLib dans "/repertoire", alors que
l'utilisateur
va fourrer la lib n'importe où...


Avatar
Papo
désolé mon message précédent s'est formatté n'importe comment:

use FindBin;
use lib "$FindBin::Bin/../lib";

ou alors

use FindBin qw($Bin);
use lib "$Bin/../lib";

il suffit d'enlever le ../lib si tu laisses ta lib au même endroit que le
.pl


Pascal