Informática Numaboa - Tutoriais e Programação
Linguagem Perl - Variáveis Predefinidas
Sab 22 Nov 2008 19:28 |
- Detalhes
- Categoria: Perl e CGI
- Atualização: Sábado, 22 Novembro 2008 22:27
- Autor: vovó Vicki
- Acessos: 4988
A linguagem Perl possui uma gama de variáveis predefinidas. O conteúdo dessas variáveis pode ser acessado para se obter informações sobre a configuração do interpretador Perl e sobre a configuração do sistema do servidor. Algumas variáveis, entretanto, apresentam um conteúdo específico dependendo da situação do procedimento. Estas possibilidades, porém, devem ser exploradas apenas quando se tem o domínio da linguagem.
Escalares predefinidas
A lista a seguir não está completa. Contém apenas as principais variáveis escalares predefinidas.
Escalar | Explicação | Exemplo |
$_ | É a variável predefinida mais conhecida da Perl. Em loops de procura (por exemplo, na procura em uma lista) ela contém o valor da posição atual. Ela pode ser integrada diretamente na procura, sem a necessidade de se definir uma variável própria. O exemplo ao lado mostra a sequência de números que foram definidos na lista @Numeros. |
@Numeros = (1..10); for(@Numeros) { print $_, "\n"; } |
$. | Guarda a linha atual do último arquivo lido. No exemplo ao lado, todas as linhas de um arquivo texto são lidas e impressas. No final, $. indica quantas linhas foram lidas. |
open(ARQUIVO, "<readme.txt"); while(<ARQUIVO>) { print $_; } print $., "Linhas lidas"; close(ARQUIVO); |
$/ | Contém o separador estabelecido para uma entrada de dados. Pode ser alterado - mais de um separador é permitido. O exemplo ao lado mostra que uma entrada efetuada através da entrada padrão só pode ser terminada quando o usuário digitar FIM seguido de <return>. |
$/ = "FIM"; $SeuNome = <stdin><STDIN>; print $SeuNome; |
$] | Contém o número da versão do interpretador Perl utilizado. Esta variável é apropriada para garantir que o código a ser executado seja compatível com a versão do interpretador. |
{ print "O interpretador Perl é muito antigo"; } else { print $]; } |
$! | Caso tenha ocorrido um erro, contém a mensagem de erro ou o número do erro do contexto atual. No exemplo ao lado há um comando que tenta abrir um arquivo. Se o arquivo não puder ser aberto, a mensagem de erro será impressa. |
open(ARQUIVO, "<nadinha.txt") || print $!; |
$0 | Contém o nome do arquivo do script Perl que está sendo executado. Seu valor pode ser alterado. |
print $0, " está sendo executado!"; |
$$ | Contém a identificação (ID) do processo que está sendo executado. É interessante em sistemas UNIX/Linux. |
"O processo ", $$, " está sendo executado!"; |
$^T | Contém a hora exata, em milissegundos, do início da execução do script. O exemplo em destaque mostra um pequeno teste de benchmark. Após executar um longo loop de cálculos, mostra quanto tempo o script gastou na execução. |
@Numeros = (1..50000); for(@Numeros) { $x = sqrt($_); } $Inicio = $^T; $Agora = time; print "Tempo: ", $Agora - $Inicio, " ms\n"; |
$& | Após a utilização de uma expressão regular, contém o valor que corresponde ao padrão da procura. |
$Frase = "Homem e Mulher"; $Frase =~ /\be\b.*/; print $&; |
$+ | Após a utilização de uma expressão regular regular entre parênteses, contém o valor que corresponde ao padrão da procura. |
$Frase = "Homem e Mulher"; $Frase =~ /(\be\b).*/; print $+; |
$1, $2, etc | Após a utilização de uma expressão regular entre parênteses numerada, contém o valor que corresponde ao padrão numerado da procura. |
$Frase = "Homem e Mulher"; $Frase =~ /(\be\b).*/1; print $1; |
Matrizes e Hashes predefinidos
A lista a seguir não está completa. Contém apenas as principais variáveis de matrizes e hashes predefinidos.
Matriz/Hash | Explicação | Exemplo |
@_ | Contém os parâmetros enviados quando se chama uma subrotina. Na subrotina, estes parâmetros podem ser acessados através de $_[0] (primeiro parâmetro), $_[1] (segundo parâmetro), etc |
&Fale("Olá pessoal"); sub Fale { print $_[0]; } |
@ARGV | Contém os parâmetros enviados na abertura de um script Perl. Por exemplo, chamando-se Perl com perl teste.pl meutexto.txt, então meutexto.txt é o primeiro parâmetro para o script que pode processá-lo como input na execução. No exemplo ao lado, o primeiro parâmetro $ARGV[0] é interpretado como nome de um arquivo e o script tenta abrir este arquivo. |
open(ARQ, "<$ARGV[0]") || die "Erro!"; print $ARGV[0], " aberto!"; close(ARQ); |
%ENV | Contém todo o contexto oferecido ao interpretador Perl (drivers ativos, programas do sistema, etc). O exemplo ao lado mostra todos os elementos do Hash que contém estes dados. |
for(%ENV) { print $_, "\n"; } |
Variáveis do Contexto
A linguagem utiliza variáveis de contexto principalmente para indicar determinados padrões de procura ao interpretador Perl. A lista a seguir não está completa, contém apenas as principais variáveis de contexto predefinidas. Pode-se obter o conteúdo deste tipo de variável através de $Valor = $ENV{'PATH'};. O importante neste caso é a utilização de $ENV{'NomeDaVariável'} - o nome da variável precisa estar entre chaves e o uso de aspas simples é aconselhável.Variável | Explicação |
HOME | Contém o caminho que deve ser seguido quando um comando chdir não contiver parâmetros (típico do Unix/Linux). |
PATH | Contém o caminho completo, ou seja, todos os diretórios nos quais os programas executáveis devem ser procurados. É utilizada pelo Perl quando um script chama um segundo script Perl cuja localização não tenha sido especificada. |