problema de impressão

1. problema de impressão

Paulo Penicheiro
smasher41

(usa Outra)

Enviado em 04/02/2012 - 17:54h

Oi Pessoal estou com problemas na impressão na mesma linha, as taxas euribor do meu scritp, ficam todas umas em cima das outras, já fiz o chomp às variáveis mas mesmo assim não funciona, será que podiam dar uma ajuda. O PROBLEMA ESTÁ NA "FUNÇÃO DE DOWNLOAD DA INFORMAÇÃO DO SITE"

o output desejado é este:


--------Type ------todays date --Yesterdays date ---- variation

Euribor 3 months --- 1,108% ------- 1,115% ---------- DOWN
Euribor 6 months --- 1.401% ------- 1,411% ---------- UP
Euribor 12 months --- 1,737% ------ 1,737% ---------- SAME

here is my code:

#!/usr/bin/perl -w
use strict;
use 5.010;

#Filename: euribor.pl
#Hostname: asus
#Author: Paulo Penicheiro e Luis Santos
#Created: Friday 20120203 11h10
#================================================================================================================================
#O SCRIPT VAI EXTRAIR INFORMAÇÃO DE UM SITE E ENVIAR ESSA INFORMAÇÃO POR MAIL PARA OS UTILIZADORES CONSTANTES DE UM FICHEIRO TXT
#================================================================================================================================


#============================================= FUNÇÃOO VALIDATE USERS =====================================================

sub validateusers()
{
my ($users,$fimciclo); #DCLARAÇÃO DE VARIÃVEIS DE UTILIZADOR

$users = "utilizadores.txt"; #DEFINE O NOME DO FICHEIRO QUE VAI CONTER OS EMAILS

if (-f $users) #TESTA SE O FICHEIRO EXISTE, CASO SE VERIFIQUE A CONDIÇÃO ABRE O FICHEIRO EM MODO DE ESCRITA
{
if (-z $users) #TESTA SE O FICHEIRO ESTà VAZIO, CASO SE VERIFIQUE A CONDIÇÃO (-z devolve TRUE se o ficheiro estiver vazio)
{
open(USERS,">$users") || die("erro ao escrever para ficheiro: $!\n"); # ABRE O FICHEIRO UTILIZADORES EM MODO DE ESCRITA, CASO HAJA ALGUM ERRO NA ESCRITA TERMINA O SCRIPT
&insertuser(); #CHAMA A FUNÇÃO PARA INSERIR NOVOS UTILIZADORES
}

}
else
{
open(USERS,">>$users") || die("erro ao escrever para ficheiro: $!\n"); # CRIA O FICHEIRO UTILIZADORES EM MODO DE ESCRITA COM CAPACIDADE DE ACRESCENTAR DADOS, CASO HAJA ALGUM ERRO NA ESCRITA TERMINA O SCRIPT
&insertuser(); #CHAMA A FUNÇÃO PARA INSERIR NOVOS UTILIZADORES
}
}

#======================================= FIM DA FUNÇÃO VALIDATE USERS ====================================================


#============================================= FUNÇÃO INSERT USERS =======================================================

sub insertuser()
{
my ($usermail,$username,$fimciclo); #DECLARAÇÃO DE VARIÃVEIS
my $validemail;
$usermail ="";
do
{
print "=====================================================================\n";
printf ("#- Introduza o nome dp utilizador: ---> ");
chomp ($username = <STDIN>); #ELIMINA O CARACTER DE FIM DE LINHA
print "\n\n";
do
{
$validemail = 0;
printf ("#- Introduza o email do utilizador: ---> ");
chomp ($usermail = <STDIN>);
if ($usermail =~ /^([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]){0,70}$/) #EXPRESSÃO REGULAR QUE VALIDA O EMAIL
{
$validemail = 1;
print "--> email válido <--\n";
}
else
{
$validemail = 0;
print "--> email inválido <--, volte a repetir a operação!!!\n";
}
}while ($validemail == 0);
print "\n\n";
$username = lc($username); # CONVERTE A VARIÃVEL PARA LETRAS MAIÚSCULA
print USERS "$username",";","$usermail\n"; #IMPRIME NO FICHEIRO O NOME DO UTILIZADOR E RESPECTIVO EMAIL, SEPARADOS POR ;
do
{
print "\n--> Deseja inserir outro Utilizador?? --> S - Sim ou N - Não " ; #CONDIÇÃO PARA CRIAÇÃO DE NOVO UTILIZADOR
chomp ($fimciclo = <STDIN>);
$fimciclo = uc($fimciclo); #CONVERTE A VARIÃVEL PARA MAIÚSCULAS
print "\n\n";
if ($fimciclo eq "N") #CONDIÇÃO PARA FECHAR O FICHEIRO
{
close USERS # FECHA O FICHEIRO CASO NÃO SE QUEIRA EDITAR MAIS
}
}while ($fimciclo ne "S" && $fimciclo ne "N") #TERMINA O CICLO CASO SEJA INTRODUZIA A LENTRA "S" OU "N" (&& --> E)
}while ($fimciclo ne "N"); #CONDIÇÃO DE TERMINUS DO CICLO
}

#======================================== FIM DA FUNÇÃO INSERT USERS ===================================================



#====================================== FUNÇÃO DE DOWNLOAD DA INFORMAÇÃO DO SITE =======================================

sub wgetdata ()
{
my $webfile;
my ($today, $yesterday,$euribor3today,$euribor3yesterday,$euribor6today,$euribor6yesterday,$euribor12today,$euribor12yesterday);
my ($ratestatus3meses,$ratestatus6meses,$ratestatus12meses);
my ($eu3today,$eu6today,$eu12today,$status3,$status6,$status12);

open(PRINT,">print.txt") || die("erro ao escrever para ficheiro: $!\n"); # ABRE O FICHEIRO UTILIZADORES EM MODO DE ESCRITA, CASO HAJA ALGUM ERRO NA ESCRITA TERMINA O SCRIPT
$webfile = "taxas-euribor-actuais.asp";


if (-f $webfile) #VERFICA SE EXISTE O FICHEIRO JÃ PREVIAMENTE DESCARREGADO
{
unlink($webfile); #APAGA O FICHEIRO O QUE CONTEM AS TAXAS DA EURIBOR PARA ESTAR SEMPRE ACTUALIZADO
}


`wget http://pt.euribor-rates.eu/taxas-euribor-actuais.asp`; #FAZ O DOWNLOAD DA PÃGINA PRETENDIDA PARA TRATAR A INFORMAÇÃO A SACAR
print "\nFicheiro, ",$webfile," foi descarregado com sucesso!!!\n\n";#MANDA MENSAGEM CASO O FICHEIRO TENHA SIDO DESCARREGADO COM SUCESSO


chomp($today = `date "+%d-%m-%Y"`); #DATA FORMATADA DE ACORDO COM A DATA DO FICHEIRO DESCARREGADO, RETORNANDO A DATA DE HOJE
chomp($yesterday = `date -d yesterday "+%d-%m-%Y"`); #DATA FORMATADA DE ACORDO COM A DATA DO FICHEIRO DESCARREGADO, RETORNANDO A DATA DE ONTEM DEVIDO AO ARGUMENTO (-d yesterday)

$euribor3today = `grep -A15 '3 meses' $webfile |cut -f1 -d' ' |tail -13 |head -1`; #|cut -f1 -d%)
$euribor6today = `grep -A15 '6 meses' $webfile |cut -f1 -d' ' |tail -13 |head -1`; #|cut -f1 -d%)
$euribor12today = `grep -A15 '12 meses' $webfile |cut -f1 -d' ' |tail -13 |head -1`; #|cut -f1 -d%)
$euribor3yesterday = `grep -A15 '3 meses' $webfile |cut -f1 -d' ' |tail -13 |head -4 |tail -1 `; #|cut -f1 -d% |tr -s',' '.'`)
$euribor6yesterday = `grep -A15 '6 meses' $webfile |cut -f1 -d' ' |tail -13 |head -4 |tail -1 `; #|cut -f1 -d% |tr -s',' '.'`)
$euribor12yesterday = `grep -A15 '12 meses' $webfile |cut -f1 -d' ' |tail -13 |head -4 |tail -1 `; #|cut -f1 -d% |tr -s',' '.'`)



chomp ($euribor3today);
chomp ($euribor6today);
chomp ($euribor12today);
chomp ($euribor3yesterday);
chomp ($euribor6yesterday);
chomp ($euribor12yesterday);
chomp ($status3 = &ratestatus($euribor3today,$euribor3yesterday));
chomp ($status6 = &ratestatus($euribor6today,$euribor12yesterday));
chomp ($status12 = &ratestatus($euribor12today,$euribor12yesterday));

print "\n\nAs taxas Euribor foram actualizadas:\n";
print "======================================\n\n";

print "-----> Modalidade <----- ----> $today <---- ----> $yesterday <---- ----> Variação <----\n";
print "==========================================================================================\n\n";
print "Euribor a 3 Meses ---- $euribor3today ----> $euribor3yesterday ----> $status3 \n";
print "Euribor a 6 Meses ---- $euribor6today ----> $euribor6yesterday ----> $status6 \n";
print "Euribor a 12 Meses ---- $euribor12today ----> $euribor12yesterday ----> $status12 \n";
print "===========================================================================================\n\n";

}




#======================== FUNÇÃO DE ANÃLISE DA VARIAÇÃO DA TAXA EURIBOR ====================================

sub ratestatus($$)
{
my ($today,$yesterday,$ratestatus);

$today = $_[0];
$yesterday = $_[1];

if ($today gt $yesterday)
{
$ratestatus = "SUBIU";
}
elsif ($today lt $yesterday)
{
$ratestatus = "DESCEU";
}
else
{
$ratestatus = "MANTEVE";
}

return $ratestatus;
}

#====================================== FIM DA FUNÇÃO ===================================================


#========================================= CODIGO PRINCIPAL ==========================================================

sub main()
{
my $webfile;

$webfile = "taxas-euribor-actuais.asp";


print "\n\n=====================================================================================================\n";
print "### SCRIPT EURIBOR - TRABALHO FINAL DA DISCIPLINA DE SOSD --> Paulo Penicheiro e Luis Santos <--- ### \n\n\n";

&validateusers(); #CHAMA A FUNÇÃO QUE VAI VERIFICAR SE O FICHEIRO utilizafdores.txt Jà EXISTE

print "\n\n**** Ficheiro utilizadores existe e contém utilizadores verificados!!****\n\n";

&wgetdata();



}

&main()


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts