Bom Dia Pessoal! Consegui evoluir no código com a api do posix mesmo crio as datas com POSIX::strftime e calculo o horário de verão pegando a saida do comando cal no shell
yep, eu sei que é feito, mas resolve o meu problema de um jeito rápido... por hora, a idéia é só gerar o "okay" da gerencia p/ matar umas 4 versões shell que fazem o mesmo trabalho, mas precisam de alguns parâmetros diferentes e alguma intervenção humana especificamente no período de horário de verão a minha dúvida é primária, suponho... mas eu não entendi o porque usar o shift se eu posso verificar com o defined() se o @_[<número>] está definido? Aceito sugestões e Mais uma vez, Valeu mesmo pela força! :P BTW, código todo a seguir: #!/usr/bin/perl use strict; use warnings; use POSIX; # a inicia a data em 1900 entao, se for passado 95 => 1995 sub calcularDeslocamentoAno { die "ano invalido" unless defined(@_[0]) && return ($_[0] > 99 ? $_[0] - 1900 : $_[0]); } sub criarData { die "parametros invalidos" unless (defined(@_[0]) && defined(@_[1]) && defined(@_[2])); #Usage: POSIX::strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) return POSIX::strftime("%Y,%m,%d", 0, 0, 0, @_[0], (@_[1] -1), &calcularDeslocamentoAno(@_[2]), 0, 0); } sub calcularDiaInicioHorarioVerao { my $dia_inicio = `cal 10 2013 | tail -4 | head -1 | cut -d' ' -f7`; } sub calcularDiaFimHorarioVerao { my $dia_fim = `cal 2 2014 | tail -4 | head -1 | cut -d' ' -f7`; } sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s; } print &criarData(2, 5, 2014); print &trim($dia_inicio); print &trim($dia_fim); Geraldo Netto Sapere Aude => Non dvcor, dvco São Paulo, Brasil, -3gmt site: http://exdev.sf.net/ 2014-02-26 23:41 GMT-03:00 Geraldo Netto <geraldone...@gmail.com>: > Opa! > > Tudo okay Pessoal? > > Eu sou o Geraldo, um ghost reader da SPPM (e algumas outras PMs) > e eu ando trabalhando vagarosamente num projetinho > que eu dependo de verificação do horário de verão > > A idéia é separar o ano em 3 partes: > > fim do horário de verão (terceiro domingo de fevereiro) > fora do horário de verão > início do horário de verão (terceiro sábado de fevereiro) > > E baseado nisso, lançar um shell que vai receber o timezone, data de > início e de fim > p/ fazer a coleta de dados pelo hp openview (comando ovpmbatch) > > Só que... > -eu tenho um servidor tru64 (sem suporte) > -rodando perl 5.8 (2002 pelo o que o version diz...) > -sem sudo/root/possibilidade de instalação de pacotes de terceiros > -<inclua-aqui-todas-as-limitações-que-vocês-imaginarem-de-infra> > -meu "core business" é análise de desempenho de software, > então o código não pode ser muito "perlish" > porque alguém pode precisar dar manutenção depois de mim > > Embora eu ainda não tenha código real (só comecei a brincar) > Eu estou pensando em ir com a api do posix, especificamente a > função/método strftime > > Eventualmente vocês teriam alguma sugestão? > > > Grande Abraço! > > Geraldo Netto > Sapere Aude => Non dvcor, dvco > São Paulo, Brasil, -3gmt > site: http://exdev.sf.net/ =begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer