Mercurial > repos > fgiacomoni > downloader_bank_hmdb
comparison lib/conf.pm @ 0:7c9269bded0e draft
Init repository for [downloader_bank_hmdb]
author | fgiacomoni |
---|---|
date | Tue, 14 Jan 2020 05:21:23 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7c9269bded0e |
---|---|
1 package conf ; | |
2 | |
3 use strict; | |
4 use warnings ; | |
5 use Exporter ; | |
6 use Carp ; | |
7 use Data::Dumper ; | |
8 | |
9 use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS); | |
10 | |
11 our $VERSION = "1.0" ; | |
12 our @ISA = qw(Exporter) ; | |
13 our @EXPORT = qw( as_conf get_value_from_conf check_path_and_file ) ; | |
14 our %EXPORT_TAGS = ( ALL => [qw( as_conf get_value_from_conf )] ) ; | |
15 | |
16 =head1 NAME | |
17 | |
18 conf - A module for manage pfem conf file | |
19 | |
20 =head1 SYNOPSIS | |
21 | |
22 use conf ; | |
23 my $object = conf->new() ; | |
24 | |
25 =head1 DESCRIPTION | |
26 | |
27 This module does manage conf file (extract all or selected fields) | |
28 | |
29 =head1 METHODS | |
30 | |
31 Methods are : | |
32 | |
33 =head2 METHOD new | |
34 | |
35 ## Description : new | |
36 ## Input : $self | |
37 ## Ouput : bless $self ; | |
38 ## Usage : new() ; | |
39 | |
40 =cut | |
41 ## START of SUB | |
42 sub new { | |
43 ## Variables | |
44 my $self={}; | |
45 bless($self) ; | |
46 return $self ; | |
47 } | |
48 ### END of SUB | |
49 | |
50 =head2 METHOD as_conf | |
51 | |
52 ## Description : permet de creer l'object conf a partir d'un fichier de conf de type KEY=VALUE | |
53 ## Input : $file | |
54 ## Ouput : $oConf (a hash) | |
55 ## Usage : my ( $oConf ) = as_conf( $file ) ; | |
56 | |
57 =cut | |
58 ## START of SUB | |
59 sub as_conf { | |
60 ## Retrieve Values | |
61 my $self = shift ; | |
62 my ( $file, $separator ) = @_ ; | |
63 | |
64 # if (!defined $separator) { $separator = ';' } ## set separator to ; | |
65 | |
66 if ( !defined $file ) { croak "Can't create object with an none defined file\n" ; } | |
67 | |
68 my %Conf = () ; ## Hash devant contenir l'ensemble des parametres locaux | |
69 | |
70 if (-e $file) { | |
71 open (CFG, "<$file") or die "Can't open $file\n" ; | |
72 while (<CFG>) { | |
73 chomp $_ ; | |
74 if ( $_ =~ /^#(.*)/) { next ; } | |
75 elsif ($_ =~/^(\w+?)=(.*)/) { ## ALPHANUMERIC OR UNDERSCORE ONLY FOR THE KEY AND ANYTHING ELSE FOR VALUE | |
76 | |
77 my ($key, $value) = ($1, $2) ; | |
78 | |
79 if (defined $separator) { | |
80 if ( $value=~/$separator/ ) { ## is a list to split | |
81 my @tmp = split(/$separator/ , $value) ; | |
82 $Conf{$key} = \@tmp ; | |
83 } | |
84 } | |
85 else { | |
86 $Conf{$key} = $value ; | |
87 } | |
88 } | |
89 } | |
90 close(CFG) ; | |
91 } | |
92 else { | |
93 croak "Can't create object with an none existing file\n" ; | |
94 } | |
95 | |
96 return ( \%Conf ) ; | |
97 } | |
98 ## END of SUB | |
99 | |
100 =head2 METHOD as_conf_list | |
101 | |
102 ## Description : permet de charger une liste txt en array | |
103 ## Input : $file | |
104 ## Output : elements | |
105 ## Usage : my ( elements ) = as_conf_list( $conf_file ) ; | |
106 | |
107 =cut | |
108 ## START of SUB | |
109 sub as_conf_list { | |
110 ## Retrieve Values | |
111 my $self = shift ; | |
112 my ( $file ) = @_ ; | |
113 | |
114 my @elements = () ; | |
115 if ( !defined $file ) { croak "Can't create object with an none defined file\n" ; } | |
116 | |
117 if (-e $file) { | |
118 open (CFG, "<$file") or die "Can't open $file\n" ; | |
119 while (<CFG>) { | |
120 chomp $_ ; | |
121 if ( $_ =~ /^#(.*)/) { next ; } | |
122 elsif ($_ =~/^(.*)/) { if (defined $1) { push (@elements, $1) ; } } | |
123 } | |
124 } | |
125 else { | |
126 croak "Can't create object with an none existing file\n" ; | |
127 } | |
128 return(\@elements) ; | |
129 } | |
130 ## END of SUB | |
131 | |
132 =head2 METHOD get_value_from_conf | |
133 | |
134 ## Description : permet de retourner une valeur du hash de conf a partir d'une key | |
135 ## Input : $oConf, $Key | |
136 ## Ouput : $Value | |
137 ## Usage : my ( $Value ) = get_value_from_conf( $oConf, $Key ) ; | |
138 | |
139 =cut | |
140 ## START of SUB | |
141 sub get_value_from_conf { | |
142 ## Retrieve Values | |
143 my $self = shift ; | |
144 my ( $oConf, $Key ) = @_ ; | |
145 | |
146 my $Value = undef ; | |
147 | |
148 if ( defined $oConf ) { | |
149 if ( defined $oConf->{$Key} ) { | |
150 $Value = $oConf->{$Key} ; | |
151 } | |
152 } | |
153 else { | |
154 croak "Can't manage value with undefined object\n" ; | |
155 } | |
156 return($Value) ; | |
157 } | |
158 ## END of SUB | |
159 | |
160 =head2 METHOD get_value_from_conf | |
161 | |
162 ## Description : permet de retourner une valeur du hash de conf a partir d'une key | |
163 ## Input : $oConf, $Key | |
164 ## Ouput : $Value | |
165 ## Usage : my ( $Value ) = get_value_from_conf( $oConf, $Key ) ; | |
166 | |
167 =cut | |
168 ## START of SUB | |
169 sub split_value_from_conf { | |
170 ## Retrieve Values | |
171 my $self = shift ; | |
172 my ( $oConf, $Key, $sep ) = @_ ; | |
173 | |
174 my $value = undef ; | |
175 my @values = () ; | |
176 | |
177 if ( defined $oConf ) { | |
178 if ( defined $oConf->{$Key} ) { | |
179 $value = $oConf->{$Key} ; | |
180 @values = split ( /$sep/, $value) ; | |
181 } | |
182 } | |
183 else { | |
184 croak "Can't manage value with undefined object\n" ; | |
185 } | |
186 return(\@values) ; | |
187 } | |
188 ## END of SUB | |
189 | |
190 | |
191 =head2 METHOD check_path_and_file | |
192 | |
193 ## Description : permet de verifier les path et la presence des exe decrits dans le file conf. Bloque le script en cas de probleme | |
194 ## Input : $oConfs | |
195 ## Ouput : NA | |
196 ## Usage : &get_value_from_conf( $oConf ) ; | |
197 | |
198 =cut | |
199 ## START of SUB | |
200 sub check_path_and_file { | |
201 | |
202 my $self = shift ; | |
203 my ( $oConfs ) = @_ ; | |
204 | |
205 foreach my $conf ( keys %{ $oConfs } ) { | |
206 if ( $conf =~ /^FILE/ ) { | |
207 if ( -e $oConfs->{$conf} ) { | |
208 if ( -s $oConfs->{$conf} ) { next ; } | |
209 else { carp "[Warning] : The size of file $oConfs->{$conf} is null\n" ; } | |
210 } | |
211 else { | |
212 carp "[Warning] : The file $oConfs->{$conf} doesn't exist\n" ; | |
213 } | |
214 } | |
215 elsif ( $conf =~ /^PATH/ ) { | |
216 if ( -d $oConfs->{$conf} ) { next ; } | |
217 else { carp "[Warning] : The dir $oConfs->{$conf} doesn't exist\n" ; } | |
218 } | |
219 else { next ; } | |
220 } | |
221 return ; | |
222 } | |
223 ## END of SUB | |
224 | |
225 1 ; | |
226 | |
227 | |
228 __END__ | |
229 | |
230 =head1 SUPPORT | |
231 | |
232 You can find documentation for this module with the perldoc command. | |
233 | |
234 perldoc conf.pm | |
235 | |
236 | |
237 =head1 Exports | |
238 | |
239 =over 4 | |
240 | |
241 =item :ALL is as_conf get_value_from_conf | |
242 | |
243 =back | |
244 | |
245 =head1 AUTHOR | |
246 | |
247 Franck Giacomoni E<lt>franck.giacomoni@clermont.inra.frE<gt> | |
248 | |
249 =head1 LICENSE | |
250 | |
251 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. | |
252 | |
253 =head1 VERSION | |
254 | |
255 version 1 : 10 / 02 / 2013 | |
256 | |
257 version 2 : 15 / 12 / 2015 | |
258 | |
259 =cut |