Bonjour,
Voici l'erreur qui m'est renvoyé.
En fait, je pense que c'est parce que j'appelle dans un fichier .pm une fonction d'un autre .pm Est-ce que cela n'est pas possible?
DateFormat.pm :
et PathFunctions.pm :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #!/usr/bin/perl -w package DateFormat; require Exporter; use strict; use warnings; sub date_format{ ### Function to have the date's format : AAAA-MM-DD my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $dateUs = (1900+$year)."-".($mon+1)."-".$mday; return $dateUs; }
Et voici ce que cela me renvoi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #!/usr/bin/perl -w package PathFunctions; require Exporter; require DateFormat; use strict; use warnings; sub auto_path{ my $date = DateFormat::date_format; my $n = "blabla"; my $dir = $n.$date; return $dir }
______________EDIT________________f@ubuntu:$ perl PathFunctions.pm
Bareword "DateFormat::date_format" not allowed while "strict subs" in use at PathFunctions.pm line 12.
Execution of PathFunctions.pm aborted due to compilation errors.
J'ai modifié dans PathFunctions.pm le "require DateFormat;" par "use DateFormat;" et ça ne génère plus d'erreur mais est-ce correct ?
Qu'est-ce qui est préférable - require ou use?
Les deux fonctions vers le bas require et vers le bas use ont des tâches similaires, leur façon d'agir est cependant différente. require est chargé pour le déroulement d'un script (et cela à l'endroit où figure l'instruction require), tandis que use est déjà incorporé avant au moment de la compilation du script. Pour require vous passez donc simplement pendant l'exécution du script dans un autre script que vous faites compiler et exécuter puis vous revenez ensuite. Pour use par contre, vous obtenez après la compilation que Perl exécute avant chaque exécution du script, quasiment un grand script dont le code se compose de plusieurs fichiers modules. Cela a des conséquences. Ainsi des erreurs de syntaxe qui sont contenues dans un module incorporé avec use, sont repérées d'emblée et le script n'est pas du tout exécuté. Pour require par contre, il peut arriver que le script principal soit sans faute mais que le script incorporé contienne des erreurs de syntaxe. Celles-ci ne sont toutefois repérées que lorsque le script principal est déjà en cours d'exécution. Ce qui peut provoquer des états indéfinis. Il faut privilégier aujourd'hui dans la plupart des cas l'utilisation de use. Il y a il est vrai aussi des exceptions.
Finalement les faits sont là: les deux fonctions existent aujourd'hui, et leur histoire diffère. require est plus ancien (était déjà interprété par Perl 4), tandis que use est proposé depuis la version 5. Dans la version 5, le concept des modules de Perl a été sensiblement élargi et n'a adopté que là, la forme étendue qu'on lui connaît aujourd'hui.[/QUOTE]
Partager