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