[SP-pm] Carregar arquivo com variaveis

Solli Honorio shonorio at gmail.com
Fri Feb 18 04:55:15 PST 2011


Marcelo,

Opções existem aos montes, mas a minha recomendação é KISS Ever !!! Se o que
você tem são scripts de linha de comando, eu recomendo fortemente o
Getopt::Long (que é core no Perl). Um bom exemplo que utilização deste cara
seria assim :

<code>
#!/usr/bin/env perl
use Getopt::Long;
use strict;

my $VERSION  = '0.03';
my %ERRORS   = ( 'OK' => 0, 'WARNING'=> 1, 'CRITICAL'=> 2, 'UNKNOWN'=>3,
'DEPENDENT'=>4 );
my %CONFIG;

Getopt::Long::Configure('bundling');
GetOptions (
    "v|version"    => sub { show_version() } ,
    "h|help"       => sub { show_help() }    ,
    "H|host=s"     => \$CONFIG{'hostname'}   ,
    "w|warning=s"  => \$CONFIG{'warning'}    ,
    "c|critical=s" => \$CONFIG{'critical'}   ,
    "d|disk=s"     => \$CONFIG{'disk'}       ,
  );

</code>

Como você pode ver, já recebo os parâmetros e armazeno num hash. E este cara
pode fazer muitas outras coisas, como armazenar várias opnções para o mesmo
parâmetros, tipo : '--dir /etc  --dir /home/mane --dir /var/log' e no
programa podemos ter isto assim : ' "dir=s" => \@{$CONFIG{'dir'}'.

Desta maneira o teu script não precisa ter preocupações relativas a
manipulação de arquivos externo a ele.

Seguindo a linha KISS, eviter os arquivos de configurações em formatos JSON,
XML, YAML a menos que o teu programa vá utilizar estes formatos em outra
coisa. Pois os módulos Config* para estes formatos carregam outras
dependências apenas para estes caras, e não vale a penas colocar mais código
dependência se você não for utilizar para outra coisa.

Abraços,

Solli M. Honorio


Em 17 de fevereiro de 2011 23:06, Marcelo Gigliotti <
marcelo.gigliotti em gmail.com> escreveu:

> Seria algo bem simples... eu costumo desenvolver diversos scripts pra
> automação de servidores onde trabalho e eu notei que pra cada, eu
> costumo declarar as mesmas variaveis, tais como, diretório de logs,
> ips de rede, usuários, senhas, etc... e penso que seria muito mais
> fácil se eu criasse um arquivo estatico com estas informações do que
> ficar declarando as mesmas diversas vezes.
>
> eu achei um módulo que atende perfeitamente as minhas necessidades,
> mas eu gostaria de tentar algo sem precisar de bibliotecas
> adicionais...
>
> http://search.cpan.org/~sherzodr/Config-Simple-4.59/Simple.pm
>
>
> Atenciosamente
> Marcelo Gigliotti
> Analista de Suporte
> Red Hat Certified Technician
> www.tabugado.com
> Msn: tchelllo em hotmail.com
> Linux User: #392364
>
>
>
> 2011/2/17 Daniel de Oliveira Mantovani <
> daniel.oliveira.mantovani em gmail.com>:
> > Depende muito do problema. Um arquivo de configuração resolve vários
> > problemas, normalmente ajuda a definir dados estatíscos que servirão
> > de parâmetro para uma seqüência.
> > Existe o Config::Any[0] que carrega configuração de diferentes
> > formatos de arquivo, o interlocutor poderá se aventurar lendo a
> > documentação.
> >
> > Um arquivo de configuração é só uma mídia, você não precisa abstrair
> > isso necessariamente num formato como XML e JSON.
> > Para um diagnostico, precisa-se do conhecimento do ser[1], e isso só é
> > possível quando o apresenta. Por isso eu peço que nos fale mais sobre
> > o seu problema.
> >
> > [0]http://search.cpan.org/~bricas/Config-Any-0.20/lib/Config/Any.pm
> > [1]http://pt.wikipedia.org/wiki/Diagn%C3%B3stico
> >
> > 2011/2/17 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
> >> Pessoalmente eu gosto de carregar um hash ou hashref chamado conf ou
> >> algo do tipo e, então, acessar as informações a partir dessa variavel.
> >>
> >> 2011/2/17 Marcelo Gigliotti <marcelo.gigliotti em gmail.com>:
> >>> Srs,
> >>>
> >>>
> >>> andei pesquisando sobre carregar arquivo com variaveis com o objetivo
> >>> de ganhar tempo em diversos scripts que venho desenvolvendo e também
> >>> com o objetivo de centralizar todas as minhas informações estaticas.
> >>> Encontrei uma lib (Config::Inifiles), mas gostaria de saber a opinião
> >>> de vocês sobre outros metodos ou se esta é a melhor opção.
> >>>
> >>>
> >>> Atenciosamente
> >>> Marcelo Gigliotti
> >>> Analista de Suporte
> >>> Red Hat Certified Technician
> >>> www.tabugado.com
> >>> Msn: tchelllo em hotmail.com
> >>> Linux User: #392364
> >>> =begin disclaimer
> >>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> >>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> >>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> >>> =end disclaimer
> >>>
> >>
> >>
> >>
> >> --
> >> Tiago B. Peczenyj
> >> Linux User #405772
> >>
> >> http://pacman.blog.br
> >> =begin disclaimer
> >>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> >>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> >>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> >> =end disclaimer
> >>
> >
> >
> >
> > --
> > "If you’ve never written anything thoughtful, then you’ve never had
> > any difficult, important, or interesting thoughts. That’s the secret:
> > people who don’t write, are people who don’t think."
> > =begin disclaimer
> >   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
> >  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> > =end disclaimer
> >
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
"o animal satisfeito dorme". - Guimarães Rosa
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110218/f2f9829a/attachment-0001.html>


More information about the SaoPaulo-pm mailing list