Comment créer une librairie et l'utiliser?

Résolu/Fermé
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013 - 20 juin 2013 à 12:23
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 21 juin 2013 à 11:49
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?
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 20/06/2013 à 14:03
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à :

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


Dal

Edit : correction fautes de frappe
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
20 juin 2013 à 14:28
nn je vais pas mettre du code je vais juste definir quelque variables et les utiliser apré :)
alor mon fichier _a_part.pl sera comme suit??

path1=/chemin/vers/fichier1
path2=/chemin/vers/fichier2
1;

y a pas des instruction en haut de definition du modules ou qlq chose de ce genre??mcii
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 20/06/2013 à 15:20
Tu peux rajouter le shebang (terme Unix pour les #! en première ligne) et les directives use strict et warnings, que tu devrais mettre dans tout code Perl, afin que ton script soit aussi exécutable de façon autonome. De ce fait, si tu déclares tes variables dans ton fichier_a_part.pl les déclarations devraient être précédées du mot clef "my" (et du signe $ que tu oublies dans ton exemple).

Tu peux aussi ajouter des commentaires utiles sur ton code expliquant l'usage du fichier et des variables.

#!/usr/bin/perl

## fichier_a_part.pl, date, version
#
# - à quoi il sert
# - comment l'utiliser
# - ce qu'il contient
# etc.

use strict;
use warnings;

## variables pour ceci, celà
#
my $path1 = "/chemin/vers/fichier1";
my $path2 = "/chemin/vers/fichier2";

## end of file
#
# we return 1 to "keep Perl happy"
1;

Note aussi que les variables comportant des chaînes de caractères doivent être incluses entre guillemets, ou apostrophes, entre autres possibilités de définition d'une chaîne (voir notamment cette discussion récente).


Dal
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
20 juin 2013 à 15:26
merci bcp pour tes reponses :) je posais la question car j ai vu sur net qu on mettait en haut du fichier _a_part.pl le nom du package: package nom-package; et d autre lignes tel que use Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
j ai constaté aussi qu ce fichier doit avoir l extension pm pour qu ils oit un module!
Est ce que mon cas est different car ma librairie est simple et ne contient que des variables ou doit je mettre ces lignes?
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 20/06/2013 à 15:37
Est ce que mon cas est different car ma librairie est simple et ne contient que des variables

Oui, c'est ce que j'essayais d'expliquer là : https://forums.commentcamarche.net/forum/affich-28063528-comment-creer-une-librairie-et-l-utiliser#1 (tu es cas dans le cas 1. selon ce que tu dis).

Si tu veux faire un module, suit le lien vers le guide sur PerlMonks, qui est très complet et t'indique aussi les outils à utiliser pour créer un module digne de ce nom.

Mais là, c'est l'artillerie lourde, et je ne pense pas que tu en aies besoin.


Dal
0
helmii Messages postés 28 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 8 juillet 2013
20 juin 2013 à 15:46
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.
0