<div dir="ltr">Blabos++</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-02-28 14:49 GMT-03:00 Geraldo Netto <span dir="ltr"><<a href="mailto:geraldonetto@gmail.com" target="_blank">geraldonetto@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Opa!<br>
<br>
Boas dicas Buss e Blabos!!!<br>
Fico devendo a pizza! :)<br>
<br>
Vou melhorar aqui o que eu já tenho e vamos conversando!<br>
<br>
Sobre outros módulos, eu realmente não quero tentar instalar e etc<br>
porque eu sei que eu não vou conseguir mexer nesse servidor<br>
<br>
mesmo que o POC funcione, acho difícil que alguém me autorize a mexer<br>
(instalar um módulo) em um servidor sem suporte do fornecedor (tenho<br>
um dinossauro de Unix que mexe nele quando as coisas explodem e olhe<br>
lá...)<br>
<br>
E mesmo com a possível dificuldade de manipulação de datas com a api do posix<br>
eu prefiro ela que ter que calcular as coisas todas em shell, eheheh :)<br>
<br>
Além do mais, eu acho que eu posso pegar alguns atalhos no sentido de<br>
limpar a forma como eu to desenhando esse script<br>
<br>
Outros incrementos virão! :)<br>
<br>
<br>
Força e Honra Senhores!<br>
<div class=""><br>
Geraldo Netto<br>
Sapere Aude => Non dvcor, dvco<br>
São Paulo, Brasil, -3gmt<br>
site: <a href="http://exdev.sf.net/" target="_blank">http://exdev.sf.net/</a><br>
<br>
<br>
</div>2014-02-28 14:28 GMT-03:00 Blabos de Blebe <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>>:<br>
<div class="HOEnZb"><div class="h5">> Eu tava escrevendo uma resposta, mas o buss foi mais rápido então cortando<br>
> os overlaps, com bastante licença poética:<br>
><br>
> Primeiro as masturbações estilísticas:<br>
><br>
>> #!/usr/bin/perl<br>
><br>
> Eu prefiro usar:<br>
><br>
> #!/usr/bin/env perl<br>
><br>
> Porque, se o script for usado num ambiente onde espera-se outro perl que não<br>
> o do /usr/bin, como num perlbrew por exemplo, você não fica com a versão<br>
> antiga do perl hardcoded.<br>
><br>
> Mas no seu caso, não acredito que vá ocorrer esse caso de uso, então pode<br>
> ficar como está, numa boa. Não está errado.<br>
><br>
>> use strict;<br>
>> use warnings;<br>
><br>
> Bom garoto!<br>
><br>
> Ambas as pragmas são mandatórias, caso você esteja escrevendo algo<br>
> minimamente decente. Tem gente que gosta também do:<br>
><br>
> use diagnostics;<br>
><br>
> que te dá ainda mais informação em caso de problemas.<br>
><br>
>> use POSIX;<br>
><br>
> Aqui, a explicação longa é longa (call @garu), mas resumidamente, você está<br>
> importando alguns símbolos desnecessários automaticamente pro namespace<br>
> corrente.<br>
><br>
> Isso é completamente irrelevante pro seu caso, mas vc poderia fazer assim:<br>
><br>
> use POSIX ();<br>
><br>
> que significa, adicione o módulo POSIX mas não importe nenhum símbolo. Ou<br>
> ainda:<br>
><br>
> use POSIX qw{ strftime }<br>
><br>
> que significa, adicione o módulo POSIX e importe somente o símbolo (função)<br>
> strftime. Nesse caso, ao usar a sub, vc não precisaria mais prefixar com<br>
> POSIX::<br>
><br>
> Do meu ponto de vista, tanto faz:<br>
><br>
> use POSIX ();<br>
> POSIX::strftime();<br>
><br>
> ou<br>
><br>
> use POSIX qw( strftime );<br>
> strftime();<br>
><br>
><br>
> Eu também prefiro nomear_funcoes_em_minusculas_com_underscore do que<br>
> comCameCaseIgualAoJava.<br>
><br>
><br>
> ***<br>
><br>
><br>
> Sobre a sua dúvida na captura e tratamento dos parâmetros tem algumas<br>
> sutiliezas que podem levar a erros.<br>
><br>
> *** Primeiramente, acessar elementos versus acessar slice de um array<br>
><br>
> A forma de acessar um escalar dentro de um array é indicando que ele é um<br>
> escalar, e dizendo qual índice você quer, ou seja, para acessar o terceiro<br>
> elemento do array foo, temos:<br>
><br>
> my $elemento = $foo[ 2 ];<br>
><br>
> que significa mais ou menos, pegue o escalar ($) que está no array foo na<br>
> posição 3 (índice 2).<br>
><br>
> Quando você faz:<br>
><br>
> $a = @_[3];<br>
><br>
> Você está pedindo, me dê um array (@) contendo os elementos que estão "nos<br>
> índices" 3 do array _. Isso é um slice, que normalmente é usado pra pegar<br>
> pedaços de array.<br>
><br>
> No seu caso, como você tá pedidndo uma lista com apenas um elemento, também<br>
> funciona mas experimente testar o seguinte:<br>
><br>
> my $a = @_[1,2];<br>
><br>
><br>
> Dito isso, quando vc faz:<br>
><br>
> $foo = @_[0], a menos que você saiba exatamente o que está fazendo, isso<br>
> está errado. Não é questão de estilo aqui. O correto seria:<br>
><br>
> $foo = $_[0];  ## Me dê o escalar que está no índice zero do array _<br>
><br>
><br>
> *** Acessando parâmetros de funções<br>
><br>
> Os parâmetros de funções são passados no array _, ou seja, @_.<br>
><br>
> Ele faz aliasing das variáveis passadas, ou seja, ao lidar com $_[]<br>
> diretamente, você pode causar efeitos colaterais externos inesperados.<br>
><br>
> Por exemplo, nesse oneliner apenas para efeitos didáticos:<br>
><br>
> perl  -e 'sub foo { $_[0]++ } $a=1; foo($a); print $a . $/'<br>
><br>
> Por isso é boa prática criar uma cópia local dos argumentos dentro da<br>
> função. Isso pode ser feito de varias maneiras, conforme o caso:<br>
><br>
><br>
> ## Crie uma cópia do @_ chamada @args;<br>
> my @args = @_;<br>
><br>
><br>
> ## Crie uma lista com dois escalares, atribua os dois primeiros elementos do<br>
> @_ a cada um deles e descarte o resto;<br>
> my ( $first, $second ) = @_;<br>
><br>
><br>
> ## Crie uma lista contendo dois escalares, um array, guarde os dois<br>
> primeiros elementos de @_ nos escalares e o resto no array @tail<br>
> my ( $first, $second, @tail ) = @_<br>
><br>
><br>
> ## Remova o primeiro elemento de @_ e coloque-o no escalar criado<br>
> my $first = shift;   ## Equivalente a my $first = shift @_;<br>
> my $second = shift;   # Pegue o "novo primeiro" elemento de @_<br>
><br>
> A vesão com shift remove definitivamente o primeiro elemento do array. O<br>
> segundo elemento passa a ser o primeiro, e assim sucessivamente. O tamanho<br>
> do array é reduzido em 1.<br>
><br>
> Minhas fontes não confiáveis apontam que a versão com shift é menos<br>
> eficiente. Por favor me corrijam quem estiver com as fontes corretas.<br>
><br>
> Eu prefiro usar as duas primeiras formas. my @args = @_;  ou my ( $first,<br>
> $second ) = @_;<br>
><br>
> ***<br>
><br>
> Conforme o buss apontou, separe uma instrução por linha:<br>
><br>
> sub calcularDeslocamentoAno {<br>
>     my ( $ano ) = @_;<br>
><br>
>     die 'ano invalido'<br>
>       unless defined $ano;<br>
><br>
>     return $ano > 99 ? $ano - 1900 : $ano;<br>
> }<br>
><br>
> Veja como fica mais claro pro próximo cara que for dar manutenção nisso.<br>
><br>
> ***<br>
><br>
> Use qx ao invés de ` pra invocar comandos externos<br>
><br>
> sub calcularDiaInicioHorarioVerao {<br>
>    my $dia_inicio = qx{ cal 10 2013 | tail -4 | head -1 | cut -d' ' -f7 };<br>
> }<br>
><br>
> Considerações finais:<br>
><br>
> 1) Seu código está até bem razoável. Compartimentarizado em funções que só<br>
> fazem uma coisa. Ele está claro no que ele pretende fazer. Isso é muito bom.<br>
> Té melhor que muito programador "experiente" que tem por aí.<br>
><br>
> 2) Tem uns requintes de Perl 4, mas fazendo os ajustes indicados, que não<br>
> são nada complicados, seu código vai rejuvenecer uns 20 anos!!!<br>
><br>
> 3) Não é porque você executa comandos do Shell que o seu código Perl fica<br>
> ruim. Nada disso. É parte da linguagem e perfeitamente normal,<br>
> principalmente, porque você deixa bem claro o que você está fazendo e de<br>
> forma organizada. Acessar o shell continua sendo elegante.<br>
><br>
> Feio é fazer algazarra.<br>
><br>
> Existem módulos pra rodar comandos externos, com mil funcionalidades, mas<br>
> acredito que não são necessários no seu caso.<br>
><br>
> 4) DateTime, pode se mais indicado do que calcular datas na mão, mas ele não<br>
> é "Core" (<a href="http://perldoc.perl.org/corelist.html" target="_blank">http://perldoc.perl.org/corelist.html</a>), portanto pode ser difícil<br>
> de instalar no seu sistema com ambiente restrito. Você tem que medir se o<br>
> custo de instalar vale o benefício que ele fornece ou ainda se o risco do<br>
> seu código falhar é alto ou baixo. Isso é uma análise sua.<br>
><br>
> Eventualmente eu pelo menos comentaria no código que o DateTime poderia ser<br>
> uma solução mais adequada. Vai que o ambiente muda no futuro e ele possa ser<br>
> instalado mais facilmente.<br>
><br>
> 5) Tente escrever testes automatizados que validem a sua aplicação.<br>
><br>
><br>
><br>
> Bom, espero que tenhamos te ajduado. Qualquer coisa avisa.<br>
><br>
><br>
> []'s<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> 2014-02-28 13:31 GMT-03:00 Bruno Buss <<a href="mailto:bruno.buss@gmail.com">bruno.buss@gmail.com</a>>:<br>
><br>
>> Oi Geraldo,<br>
>><br>
>> Respostas inline :-)<br>
>><br>
>><br>
>> 2014-02-28 11:59 GMT-03:00 Geraldo Netto <<a href="mailto:geraldonetto@gmail.com">geraldonetto@gmail.com</a>>:<br>
>><br>
>>> Bom Dia Pessoal!<br>
>>><br>
>>> Consegui evoluir no código com a api do posix mesmo<br>
>>> crio as datas com POSIX::strftime<br>
>>> e calculo o horário de verão pegando a saida do comando cal no shell<br>
>>><br>
>>> yep, eu sei que é feito, mas resolve o meu problema de um jeito rápido...<br>
>>> por hora, a idéia é só gerar o "okay" da gerencia p/ matar umas 4<br>
>>> versões shell que fazem o mesmo trabalho, mas precisam de alguns<br>
>>> parâmetros diferentes e alguma intervenção humana especificamente no<br>
>>> período de horário de verão<br>
>><br>
>><br>
>> Thumbs up por resolver o problema! :D<br>
>><br>
>> Entretanto, o que a galera quer passar aqui, e' que mesmo que você<br>
>> realmente acredite que esta resolvendo seu problema de forma simples e<br>
>> rápida agora... não esta'. Ou melhor, o jeito rápido agora *provavelmente*<br>
>> ira' te causar uma baita dor de cabeça soon(tm).<br>
>><br>
>> Tente utilizar o DateTime, e' uma solução ordens de grandeza melhor e não<br>
>> e' tao difícil assim :-)<br>
>><br>
>>><br>
>>><br>
>>> a minha dúvida é primária, suponho...<br>
>>> mas eu não entendi o porque usar o shift<br>
>>> se eu posso verificar com o defined() se o @_[<número>] está definido?<br>
>><br>
>><br>
>> O shift serve para voce retirar e retornar o 1o elemento da lista de<br>
>> argumentos/parâmetros que foi passada para sua função.<br>
>><br>
>> E' uma das formas idiomáticas de se fazer isso, a outra seria "my ($v_a,<br>
>> $v_b, $v_c) = @_;".<br>
>> Pessoalmente prefiro com shift :-)<br>
>><br>
>>><br>
>>><br>
>>> Aceito sugestões e Mais uma vez, Valeu mesmo pela força! :P<br>
>>><br>
>>><br>
>>> BTW, código todo a seguir:<br>
>>><br>
>>> #!/usr/bin/perl<br>
>>><br>
>>> use strict;<br>
>>> use warnings;<br>
>>><br>
>>> use POSIX;<br>
>>><br>
>>><br>
>>> # a inicia a data em 1900 entao, se for passado 95 => 1995<br>
>>> sub calcularDeslocamentoAno {<br>
>>>     die "ano invalido" unless defined(@_[0]) && return ($_[0] > 99 ?<br>
>>> $_[0] - 1900 : $_[0]);<br>
>>> }<br>
>><br>
>><br>
>> Então para você o ano 50 e' o mesmo que o ano 1950? :P<br>
>> Ou se eu passar para você o ano 1800, ele retorna -100.<br>
>><br>
>> Outra coisa, você realmente não precisa colocar o return na mesma linha do<br>
>> die...<br>
>> Por exemplo:<br>
>><br>
>> sub calcularDeslocamentoAno{<br>
>>     my $ano = shift;<br>
>><br>
>>     #Rejeitando coisas que nossa funcao nao sabe tratar.<br>
>>     die "ano invalido" unless defined $ano && $ano >= 1900;<br>
>><br>
>>     return $ano - 1900;<br>
>> }<br>
>><br>
>>><br>
>>><br>
>>> sub criarData {<br>
>>>     die "parametros invalidos" unless (defined(@_[0]) &&<br>
>>> defined(@_[1]) && defined(@_[2]));<br>
>>>     #Usage: POSIX::strftime(fmt,             sec, min, hour, mday,<br>
>>> mon, year, wday = -1, yday = -1, isdst = -1)<br>
>>>     return POSIX::strftime("%Y,%m,%d", 0, 0, 0, @_[0], (@_[1] -1),<br>
>>> &calcularDeslocamentoAno(@_[2]), 0, 0);<br>
>>> }<br>
>><br>
>><br>
>> Idealmente você estaria tratando:<br>
>> * Se o 1o parâmetro e' um dia que esta' no mês (posso tentar usar stftime<br>
>> passando o dia 31 de Fev?)<br>
>> * Se o 1o parâmetro e' um dia valido at all (dia igual a 44 por exemplo).<br>
>> * Lembrar que o dia e o mês são 0-based, ou seja Janeiro => 0, Fev => 1,<br>
>> etc.<br>
>> ...<br>
>><br>
>> Voce tambem poderia fazer:<br>
>> sub criarData {<br>
>>     my ($dia, $mes, $ano) = @_;<br>
>>     die "parametros invalidos" unless defined $dia   &&<br>
>>                                                      defined $mes &&<br>
>>                                                      defined $ano;<br>
>>     ...<br>
>> }<br>
>><br>
>> Detalhe: O DateTime tem funções de formatação de data tao boas quanto ;-)<br>
>><br>
>>><br>
>>><br>
>>> sub calcularDiaInicioHorarioVerao {<br>
>>>     my $dia_inicio = `cal 10 2013 | tail -4 | head -1 | cut -d' ' -f7`;<br>
>>> }<br>
>>><br>
>>> sub calcularDiaFimHorarioVerao {<br>
>>>     my $dia_fim = `cal 2 2014 | tail -4 | head -1 | cut -d' ' -f7`;<br>
>>> }<br>
>><br>
>><br>
>> Alguém já disse em substituir isso tudo por DateTime? :P<br>
>><br>
>>><br>
>>><br>
>>> sub  trim {<br>
>>>     my $s = shift;<br>
>>>     $s =~ s/^\s+|\s+$//g;<br>
>>>     return $s;<br>
>>> }<br>
>>><br>
>>> print &criarData(2, 5, 2014);<br>
>>> print &trim($dia_inicio);<br>
>>> print &trim($dia_fim);<br>
>><br>
>><br>
>> Não sei exatamente qual Perl você ta usando, mas acredito que não e'<br>
>> necessário prefixar as chamadas de funções com &. Inclusive isso e'<br>
>> considerado não legal hoje em dia :-)<br>
>><br>
>> [ ]'s<br>
>><br>
>> PS: Utilize uma ferramenta tipo pastebin ou Gist (do GitHub) para copiar e<br>
>> enviar codigos em listas de e-mail :-)<br>
>><br>
>>><br>
>>><br>
>>> Geraldo Netto<br>
>>> Sapere Aude => Non dvcor, dvco<br>
>>> São Paulo, Brasil, -3gmt<br>
>>> site: <a href="http://exdev.sf.net/" target="_blank">http://exdev.sf.net/</a><br>
>>><br>
>>> 2014-02-26 23:41 GMT-03:00 Geraldo Netto <<a href="mailto:geraldonetto@gmail.com">geraldonetto@gmail.com</a>>:<br>
>>> > Opa!<br>
>>> ><br>
>>> > Tudo okay Pessoal?<br>
>>> ><br>
>>> > Eu sou o Geraldo, um ghost reader da SPPM (e algumas outras PMs)<br>
>>> > e eu ando trabalhando vagarosamente num projetinho<br>
>>> > que eu dependo de verificação do horário de verão<br>
>>> ><br>
>>> > A idéia é separar o ano em 3 partes:<br>
>>> ><br>
>>> > fim do horário de verão (terceiro domingo de fevereiro)<br>
>>> > fora do horário de verão<br>
>>> > início do horário de verão (terceiro sábado de fevereiro)<br>
>>> ><br>
>>> > E baseado nisso, lançar um shell que vai receber o timezone, data de<br>
>>> > início e de fim<br>
>>> > p/ fazer a coleta de dados pelo hp openview (comando ovpmbatch)<br>
>>> ><br>
>>> > Só que...<br>
>>> > -eu tenho um servidor tru64 (sem suporte)<br>
>>> > -rodando perl 5.8 (2002 pelo o que o version diz...)<br>
>>> > -sem sudo/root/possibilidade de instalação de pacotes de terceiros<br>
>>> > -<inclua-aqui-todas-as-limitações-que-vocês-imaginarem-de-infra><br>
>>> > -meu "core business" é análise de desempenho de software,<br>
>>> > então o código não pode ser muito "perlish"<br>
>>> > porque alguém pode precisar dar manutenção depois de mim<br>
>>> ><br>
>>> > Embora eu ainda não tenha código real (só comecei a brincar)<br>
>>> > Eu estou pensando em ir com a api do posix, especificamente a<br>
>>> > função/método strftime<br>
>>> ><br>
>>> > Eventualmente vocês teriam alguma sugestão?<br>
>>> ><br>
>>> ><br>
>>> > Grande Abraço!<br>
>>> ><br>
>>> > Geraldo Netto<br>
>>> > Sapere Aude => Non dvcor, dvco<br>
>>> > São Paulo, Brasil, -3gmt<br>
>>> > site: <a href="http://exdev.sf.net/" target="_blank">http://exdev.sf.net/</a><br>
>>> =begin disclaimer<br>
>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>> =end disclaimer<br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Bruno C. Buss<br>
>> <a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a><br>
>><br>
>><br>
>> 2014-02-28 11:59 GMT-03:00 Geraldo Netto <<a href="mailto:geraldonetto@gmail.com">geraldonetto@gmail.com</a>>:<br>
>><br>
>>> Bom Dia Pessoal!<br>
>>><br>
>>> Consegui evoluir no código com a api do posix mesmo<br>
>>> crio as datas com POSIX::strftime<br>
>>> e calculo o horário de verão pegando a saida do comando cal no shell<br>
>>><br>
>>> yep, eu sei que é feito, mas resolve o meu problema de um jeito rápido...<br>
>>> por hora, a idéia é só gerar o "okay" da gerencia p/ matar umas 4<br>
>>> versões shell que fazem o mesmo trabalho, mas precisam de alguns<br>
>>> parâmetros diferentes e alguma intervenção humana especificamente no<br>
>>> período de horário de verão<br>
>>><br>
>>> a minha dúvida é primária, suponho...<br>
>>> mas eu não entendi o porque usar o shift<br>
>>> se eu posso verificar com o defined() se o @_[<número>] está definido?<br>
>>><br>
>>> Aceito sugestões e Mais uma vez, Valeu mesmo pela força! :P<br>
>>><br>
>>><br>
>>> BTW, código todo a seguir:<br>
>>><br>
>>> #!/usr/bin/perl<br>
>>><br>
>>> use strict;<br>
>>> use warnings;<br>
>>><br>
>>> use POSIX;<br>
>>><br>
>>><br>
>>> # a inicia a data em 1900 entao, se for passado 95 => 1995<br>
>>> sub calcularDeslocamentoAno {<br>
>>>     die "ano invalido" unless defined(@_[0]) && return ($_[0] > 99 ?<br>
>>> $_[0] - 1900 : $_[0]);<br>
>>> }<br>
>>><br>
>>> sub criarData {<br>
>>>     die "parametros invalidos" unless (defined(@_[0]) &&<br>
>>> defined(@_[1]) && defined(@_[2]));<br>
>>>     #Usage: POSIX::strftime(fmt,             sec, min, hour, mday,<br>
>>> mon, year, wday = -1, yday = -1, isdst = -1)<br>
>>>     return POSIX::strftime("%Y,%m,%d", 0, 0, 0, @_[0], (@_[1] -1),<br>
>>> &calcularDeslocamentoAno(@_[2]), 0, 0);<br>
>>> }<br>
>>><br>
>>> sub calcularDiaInicioHorarioVerao {<br>
>>>     my $dia_inicio = `cal 10 2013 | tail -4 | head -1 | cut -d' ' -f7`;<br>
>>> }<br>
>>><br>
>>> sub calcularDiaFimHorarioVerao {<br>
>>>     my $dia_fim = `cal 2 2014 | tail -4 | head -1 | cut -d' ' -f7`;<br>
>>> }<br>
>>><br>
>>> sub  trim {<br>
>>>     my $s = shift;<br>
>>>     $s =~ s/^\s+|\s+$//g;<br>
>>>     return $s;<br>
>>> }<br>
>>><br>
>>> print &criarData(2, 5, 2014);<br>
>>> print &trim($dia_inicio);<br>
>>> print &trim($dia_fim);<br>
>>><br>
>>> Geraldo Netto<br>
>>> Sapere Aude => Non dvcor, dvco<br>
>>> São Paulo, Brasil, -3gmt<br>
>>> site: <a href="http://exdev.sf.net/" target="_blank">http://exdev.sf.net/</a><br>
>>><br>
>>> 2014-02-26 23:41 GMT-03:00 Geraldo Netto <<a href="mailto:geraldonetto@gmail.com">geraldonetto@gmail.com</a>>:<br>
>>> > Opa!<br>
>>> ><br>
>>> > Tudo okay Pessoal?<br>
>>> ><br>
>>> > Eu sou o Geraldo, um ghost reader da SPPM (e algumas outras PMs)<br>
>>> > e eu ando trabalhando vagarosamente num projetinho<br>
>>> > que eu dependo de verificação do horário de verão<br>
>>> ><br>
>>> > A idéia é separar o ano em 3 partes:<br>
>>> ><br>
>>> > fim do horário de verão (terceiro domingo de fevereiro)<br>
>>> > fora do horário de verão<br>
>>> > início do horário de verão (terceiro sábado de fevereiro)<br>
>>> ><br>
>>> > E baseado nisso, lançar um shell que vai receber o timezone, data de<br>
>>> > início e de fim<br>
>>> > p/ fazer a coleta de dados pelo hp openview (comando ovpmbatch)<br>
>>> ><br>
>>> > Só que...<br>
>>> > -eu tenho um servidor tru64 (sem suporte)<br>
>>> > -rodando perl 5.8 (2002 pelo o que o version diz...)<br>
>>> > -sem sudo/root/possibilidade de instalação de pacotes de terceiros<br>
>>> > -<inclua-aqui-todas-as-limitações-que-vocês-imaginarem-de-infra><br>
>>> > -meu "core business" é análise de desempenho de software,<br>
>>> > então o código não pode ser muito "perlish"<br>
>>> > porque alguém pode precisar dar manutenção depois de mim<br>
>>> ><br>
>>> > Embora eu ainda não tenha código real (só comecei a brincar)<br>
>>> > Eu estou pensando em ir com a api do posix, especificamente a<br>
>>> > função/método strftime<br>
>>> ><br>
>>> > Eventualmente vocês teriam alguma sugestão?<br>
>>> ><br>
>>> ><br>
>>> > Grande Abraço!<br>
>>> ><br>
>>> > Geraldo Netto<br>
>>> > Sapere Aude => Non dvcor, dvco<br>
>>> > São Paulo, Brasil, -3gmt<br>
>>> > site: <a href="http://exdev.sf.net/" target="_blank">http://exdev.sf.net/</a><br>
>>> =begin disclaimer<br>
>>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>>> =end disclaimer<br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Bruno C. Buss<br>
>> <a href="http://www.brunobuss.net" target="_blank">http://www.brunobuss.net</a><br>
>><br>
>> =begin disclaimer<br>
>>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
>> =end disclaimer<br>
>><br>
><br>
><br>
> =begin disclaimer<br>
>    Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
>  SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
>  L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
><br>
=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div><div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div>

<div><div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div></div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#!/renato_cron" target="_blank">@renato_cron</a></font></div>


</div>