Existem, para as funções matemáticas superiores mais importantes, funções correspondentes em Perl. Exemplos:
#!/usr/bin/perl
$ValorAbsoluto = abs(-45683);
print "O valor absoluto de -45683 é ", $ValorAbsoluto, "\n";
$Raiz = sqrt(23876);
print "A raiz quadrada de 23876 é ", $Raiz, "\n";
$Inteiro = int(sqrt(3298476));
print "O inteiro da raiz quadrada de 3298476 é ", $Inteiro, "\n";
$Exp = exp(39);
print "A potenciação de 39 na base e é ", $Exp, "\n";
$Log = log(23);
print "O logaritmo natural na base e de 23 é ", $Log, "\n";
$Seno = sin(1.2387);
$Coseno = cos(10.237);
$ArcoTangente = atan2(1.389,2.438);
print "O seno de 1.2387 é ", $Seno, "\n";
print "O co-seno de 10.237 é ", $Coseno, "\n";
print "O arco tangente de 1.389/2.438 é ", $ArcoTangente, "\n";
@ValorHex = (10,20,30,40,50,60,70,80,90,A0,B0,C0,D0,E0,F0);
for(@ValorHex) {
$ValorDecimal = hex($_);
print $_, " é a decimal ", $ValorDecimal, "\n";
}
Com a função abs obtém-se o valor positivo de qualquer número. Passa-se o número como parâmetro e a função retorna o valor tratado.
A função sqrt calcula a raiz quadrada de um número passado como parâmetro e retona o resultado.
Com a função int extrai-se a porção inteira de um número, ou seja, de 3.1416 a função retorna 3. No exemplo acima, aliás, é possível observar como se pode passar uma função como parâmetro de outra função. Neste exemplo, a função extrai o valor inteiro do resultado de retorno da função que calcula a raiz quadrada.
A função exp retorna a constante e potenciada. A potência desejada é o parâmetro necessário para a função retornar o valor calculado.
A função log calcula o logaritmo natural na base e de um número passado como parâmetro.
Como funções trigonométricas, Perl oferece sin para o seno, cos para o co-seno e atan2 para o arco tangente. Como parâmetro, é enviado o número desejado. Arco tangente espera por dois valores: de e até. As funções retornam o valor calculado.
É claro que, ao lado dessas funções, pode-se efetuar cálculos matemáticos com os operadores matemáticos.
Para converter valores hexadecimais em decimais, pode-se utilizar a função hex. Passa-se um valor hexadecimal (dígitos de 0 a 9 e letras de A a F) como parâmetro e a função retorna o valor decimal correspondente. |
A linguagem Perl possui funções para tratar Datas e Hora. Exemplo:
#!/usr/bin/perl
$Agora = time();
$HoraLocal = localtime($Agora);
&EmPortugues;
@Tempo = split(/ +/,$HoraLocal);
@Hora = split(/:/,$Tempo[3]);
print "Boa Tarde!\n";
print "Hoje é ",$Tempo[0],", o ",$Tempo[2],". ",$Tempo[1]," ",$Tempo[4],"\n";
print "Agora são ",$Hora[0],":",$Hora[1]," horas\n";
sub EmPortugues {
$HoraLocal =~ s/Mon/Segunda/;
$HoraLocal =~ s/Tue/Terça/;
$HoraLocal =~ s/Wed/Quarta/;
$HoraLocal =~ s/Thu/Quinta/;
$HoraLocal =~ s/Fri/Sexta/;
$HoraLocal =~ s/Sat/Sábado/;
$HoraLocal =~ s/Sun/Domingo/;
$HoraLocal =~ s/Jan/Janeiro/;
$HoraLocal =~ s/Feb/Fevereiro/;
$HoraLocal =~ s/Mar/Março/;
$HoraLocal =~ s/Apr/Abril/;
$HoraLocal =~ s/May/Maio/;
$HoraLocal =~ s/Jun/Junho/;
$HoraLocal =~ s/Jul/Julho/;
$HoraLocal =~ s/Aug/Agosto/;
$HoraLocal =~ s/Sep/Setembro/;
$HoraLocal =~ s/Oct/Outubro/;
$HoraLocal =~ s/Nov/Novembro/;
$HoraLocal =~ s/Dec/Dezembro/;
}
O exemplo acima obtém e processa data e hora, retornando o resultado formatado em Português.
Com a chamada da função time obtém-se a data e hora atuais. Esta função retorna, como é comum em Unix ou C, o número de milisegundos que decorreram desde 1.1.1970 até o presente momento. Este número tem um valor um tanto alto que não diz muita coisa porém é muito exato. No exemplo acima, este valor é atribuído à escalar $Agora, a base para a chamada da função localtime. Esta função aguarda como parâmetro um número, o qual ela interpreta como sendo o número de milisegundos decorridos desde 1.1.1970. A função processa o parâmetro e gera uma cadeia de caracteres que contém a data e a hora em formato internacional, por exemplo, Sun Aug 27 15:01:12 2000. No exemplo acima, esta cadeia de caracteres é atribuída na escalar $HoraLocal.
A seguir, no mesmo exemplo, a subrotina EmPortugues é chamada. Esta subrotina substitui todas as abreviações internacionais de dias e meses por nomes em Português. Os elementos da data e da hora em $HoraLocal estão separados por espaço, delimitador utilizado na diretiva @Tempo = split(/ /,$HoraLocal); para atribuir a cada elemento desta lista os valores como dia, mês, ano, etc. Um desses elementos, o $Tempo[3], contém a hora. A hora é composta por horas, minutos e segundos separados por dois pontos. Esta cadeia de caracteres também tem seus componentes separados através da diretiva @Hora = split(/:/,$Tempo[3]); e os respectivos valores são atribuídos à lista @Hora. Com todos os componentes isolados em elementos de listas, o comando print pode ser utilizado com facilidade para mostrar o resultado obtido.
|