Comment créer une librairie et l'utiliser? [Résolu/Fermé]

Signaler
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013
-
[Dal]
Messages postés
5383
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2020
-
salut tt le monde j ai 2 programmes perl prog1.pl et prog2.pl ki utlisent plusieur variable representants des path de fichier dans leur code!
Je voulais rassembler ces path dans un seul fichier apart qui sera comme suit :
path1=/chemin/vers/fichier1
path2=/chemin/vers/fichier2
puis inclure ce fichier dans les 2 programmes perl et utiliser ces variabes path1 et path2.comment pourrais faire cela?

1 réponse

Messages postés
5383
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2020
851
Salut helmii,

1.

Si tu veux faire des choses simples dans ton fichier_a_part.pl, comme tu le dis, consistant en la définition de certaines variables (comme un fichier de configuration avec un syntaxe Perl, tu peux te contenter de faire :

require 'fichier_a_part.pl';


Dans ton code fichier_a_part.pl, termine le fichier avec une dernière ligne :

1;

afin que le retour de require confirme à Perl que tout s'est bien passé.

2.

Si tu vas y mettre du code, tu as intérêt à créer un module Perl, qui structurera le code et les données du module de façon plus cohérente.

Tu as un guide complet sur la question là :

http://www.perlmonks.org/?node_id=431702


Dal

Edit : correction fautes de frappe
helmii
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013

d acc alors voila mon code pour le fichier filepath.pl (le fichier a part)
#!/var/www/cgi-bin/perl
use strict;
use warnings;
my $path_hostapd="/etc/hostapd-1.0/hostapd/hostapd.conf";
1;

pour mon programme perl j ai inseré la ligne require '/var/www/cgi-bin/filepath.pl';#(ligne num 3)
j ai ce message d erreur lors de l execution
Name "main::path_3g" used only once: possible typo at /var/www/cgi-bin/wanmanip.pl line 43.
Can't locate /var/www/cgi-bin/filepath.pl in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.12.4 /usr/local/share/perl/5.12.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.12 /usr/share/perl/5.12 /usr/local/lib/site_perl) at /var/www/cgi-bin/wanmanip.pl line 3.
helmii
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013

la solution est d inserer use lib "/var/www/cgi-bin/filepath.pl"; a la place de require '/var/www/cgi-bin/filepath.pl'; il n y a plus de problem au nivo de l importation mais j ai pas pus acceder a la variable de la librairie!!ma syntaxe est erronée certainement
[Dal]
Messages postés
5383
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2020
851
"use lib" ajoute un répertoire à @INC(où est sensé se trouver une bibliothèque), c'est tout. Cela n' "importe" pas ta "librairie". Là, ta ligne ne fait rien de particulier. Et ce n'est pas un répertoire que tu indiques.

Par contre, tu peux t'en servir pour ajouter à @INC un répertoire où tu mets tes "librairies".

Mes souvenirs de Perl cgi remontent un peu, et je n'ai pas d'installation immédiatement fonctionnelle sous la main sous la main pour tester cela.

Si ton fichier wanmanip.pl est exécutable et accessible par le serveur http, et que filepath.pl est au même endroit, un simple require "filepath.pl"; ne suffit-il pas ? Du moins, de mémoire, c'est comme cela que je faisais lorsque j'utilisais mod-perl avec Apache.


Dal

Edit : typos
helmii
Messages postés
28
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
8 juillet 2013

voila ou je suis arrivé j espere que sa aidera quelqu un..j ai changé l extension de ma lib en: filepath.pm et voila son contenu:
#!/var/www/cgi-bin/rootperl -w
use strict;
use warnings;
our $path1="/etc/hostapd-1.0/hostapd/hostapd.conf";
1;

Sinn,dans mon programme perl ou je veu inclure cette librairi et utiliser la variable path1 on insere ces lignes:

use warnings;
use lib "/var/www/cgi-bin";
use pathfile;

ainsi on pourra apré utiliser "path1" en utilisant directement son nom.Je pourrai l'afficher par exemple en tapant: print $path1;
[Dal]
Messages postés
5383
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2020
851
Là, tu as créé un module, mais bon, c'est une solution possible.

Merci de ton retour :-)


Dal