Perl - Variáveis Especiais
Existem algumas variáveis que têm um significado predefinido e especial em Perl. Elas são as variáveis que usam caracteres de pontuação após o indicador de variável usual ($, @ ou%), como $ _ (explicado abaixo).
A maioria das variáveis especiais tem um nome longo do tipo inglês, por exemplo, a variável de erro do sistema operacional $! pode ser escrito como $ OS_ERROR. Mas se você vai usar o inglês como nomes, então você terá que colocar uma linhause English;na parte superior do arquivo do programa. Isso orienta o intérprete a captar o significado exato da variável.
A variável especial mais comumente usada é $ _, que contém a entrada padrão e a string de pesquisa de padrões. Por exemplo, nas seguintes linhas -
#!/usr/bin/perl
foreach ('hickory','dickory','doc') {
print $_;
print "\n";
}
Quando executado, isso produzirá o seguinte resultado -
hickory
dickory
doc
Novamente, vamos verificar o mesmo exemplo sem usar a variável $ _ explicitamente -
#!/usr/bin/perl
foreach ('hickory','dickory','doc') {
print;
print "\n";
}
Quando executado, isso também produzirá o seguinte resultado -
hickory
dickory
doc
Na primeira vez que o loop é executado, "hickory" é impresso. Na segunda vez, "dickory" é impresso e, na terceira vez, "doc" é impresso. Isso porque em cada iteração do loop, a string atual é colocada em $ _ e é usada por padrão por print. Aqui estão os lugares onde Perl assumirá $ _ mesmo que você não o especifique -
Várias funções unárias, incluindo funções como ord e int, bem como todos os testes de arquivo (-f, -d), exceto para -t, cujo padrão é STDIN.
Várias funções de lista, como imprimir e desvincular.
As operações de correspondência de padrões m //, s /// e tr /// quando usadas sem um operador = ~.
A variável iteradora padrão em um loop foreach se nenhuma outra variável for fornecida.
A variável iteradora implícita nas funções grep e map.
O local padrão para colocar um registro de entrada quando o resultado de uma operação de entrada de linha é testado por si mesmo como o único critério de um teste while (isto é,). Observe que fora de um teste de tempo, isso não acontecerá.
Tipos de Variáveis Especiais
Com base no uso e na natureza das variáveis especiais, podemos categorizá-las nas seguintes categorias -
- Variáveis especiais escalares globais.
- Variáveis especiais de matriz global.
- Variáveis especiais de hash globais.
- Manipuladores de arquivos especiais globais.
- Constantes especiais globais.
- Variáveis especiais de expressão regular.
- Filehandle Special Variables.
Variáveis Especiais Escalares Globais
Aqui está a lista de todas as variáveis especiais escalares. Listamos os nomes correspondentes em inglês junto com os nomes simbólicos.
$ _ | A entrada padrão e o espaço de pesquisa de padrões. |
$ ARG | |
$. | O número da linha de entrada atual do último filehandle que foi lido. Um fechamento explícito no filehandle redefine o número da linha. |
$ NR | |
$ / | O separador de registro de entrada; nova linha por padrão. Se definido como string nula, trata as linhas em branco como delimitadores. |
$ RS | |
$, | O separador de campo de saída para o operador de impressão. |
$ OFS | |
$ \ | O separador de registro de saída para o operador de impressão. |
$ ORS | |
$ " | Como "$", exceto que se aplica a valores de lista interpolados em uma string entre aspas (ou string interpretada semelhante). O padrão é um espaço. |
$ LIST_SEPARATOR | |
$; | O separador de subscrito para emulação de array multidimensional. O padrão é "\ 034". |
$ SUBSCRIPT_SEPARATOR | |
$ ^ L | O que um formato produz para realizar um formfeed. O padrão é "\ f". |
$ FORMAT_FORMFEED | |
$: | O conjunto atual de caracteres após o qual uma string pode ser quebrada para preencher os campos de continuação (começando com ^) em um formato. O padrão é "\ n" ". |
$ FORMAT_LINE_BREAK_CHARACTERS | |
$ ^ A | O valor atual do acumulador de gravação para linhas de formato. |
$ ACCUMULATOR | |
$ # | Contém o formato de saída para números impressos (obsoleto). |
$ OFMT | |
$? | O status retornado pelo último fechamento do tubo, comando backtick (``) ou operador do sistema. |
$ CHILD_ERROR | |
$! | Se usado em um contexto numérico, produz o valor atual da variável errno, identificando o último erro de chamada do sistema. Se usado em um contexto de string, produz a string de erro do sistema correspondente. |
$ OS_ERROR ou $ ERRNO | |
$ @ | A mensagem de erro de sintaxe Perl do último comando eval. |
$ EVAL_ERROR | |
$$ | O pid do processo Perl executando este script. |
$ PROCESS_ID ou $ PID | |
$ < | O ID do usuário real (uid) deste processo. |
$ REAL_USER_ID ou $ UID | |
$> | O ID de usuário efetivo deste processo. |
$ EFFECTIVE_USER_ID ou $ EUID | |
$ ( | O ID de grupo real (gid) deste processo. |
$ REAL_GROUP_ID ou $ GID | |
$) | O gid efetivo desse processo. |
$ EFFECTIVE_GROUP_ID ou $ EGID | |
$ 0 | Contém o nome do arquivo que contém o script Perl sendo executado. |
$ PROGRAM_NAME | |
$ [ | O índice do primeiro elemento em uma matriz e do primeiro caractere em uma substring. O padrão é 0. |
$] | Retorna a versão mais o nível do patch dividido por 1000. |
$ PERL_VERSION | |
$ ^ D | O valor atual dos sinalizadores de depuração. |
$ DEBUGGING | |
$ ^ E | Mensagem de erro estendida em algumas plataformas. |
$ EXTENDED_OS_ERROR | |
$ ^ F | O descritor máximo de arquivo do sistema, normalmente 2. |
$ SYSTEM_FD_MAX | |
$ ^ H | Contém dicas do compilador interno habilitadas por certos módulos pragmáticos. |
$ ^ I | O valor atual da extensão inplace-edit. Use undef para desabilitar a edição local. |
$ INPLACE_EDIT | |
$ ^ M | O conteúdo de $ M pode ser usado como um pool de memória de emergência no caso de Perl morrer com um erro de falta de memória. O uso de $ M requer uma compilação especial de Perl. Consulte o documento INSTALL para obter mais informações. |
$ ^ O | Contém o nome do sistema operacional para o qual o binário Perl atual foi compilado. |
$ OSNAME | |
$ ^ P | O sinalizador interno que o depurador limpa para que não depure a si mesmo. |
$ PERLDB | |
$ ^ T | A hora em que o script começou a ser executado, em segundos desde a época. |
$ BASETIME | |
$ ^ W | O valor atual da opção de aviso, verdadeiro ou falso. |
$ AVISO | |
$ ^ X | O nome com o qual o binário Perl foi executado. |
$ EXECUTABLE_NAME | |
$ ARGV | Contém o nome do arquivo atual ao ler de <ARGV>. |
Variáveis Especiais de Matriz Global
@ARGV | A matriz que contém os argumentos da linha de comando destinados ao script. |
@INC | O array contendo a lista de locais onde procurar scripts Perl para serem avaliados pelas construções do, require ou use. |
@F | A matriz na qual as linhas de entrada são divididas quando a opção -a da linha de comando é fornecida. |
Variáveis Especiais Hash Globais
% INC | O hash contendo entradas para o nome de arquivo de cada arquivo que foi incluído por meio de do ou require. |
% ENV | O hash contendo seu ambiente atual. |
% SIG | O hash usado para definir manipuladores de sinal para vários sinais. |
Manipuladores de arquivos especiais globais
ARGV | O manipulador de arquivos especial que itera sobre nomes de arquivos de linha de comando em @ARGV. Normalmente escrito como o filehandle nulo em <>. |
STDERR | O filehandle especial para erro padrão em qualquer pacote. |
STDIN | O filehandle especial para entrada padrão em qualquer pacote. |
STDOUT | O filehandle especial para saída padrão em qualquer pacote. |
DADOS | O filehandle especial que se refere a qualquer coisa após o token __END__ no arquivo que contém o script. Ou o identificador de arquivo especial para qualquer coisa após o token __DATA__ em um arquivo obrigatório, desde que você esteja lendo dados no mesmo pacote em que __DATA__ foi encontrado. |
_ (sublinhado) | O filehandle especial usado para armazenar em cache as informações do último stat, lstat ou operador de teste de arquivo. |
Constantes Especiais Globais
__FIM__ | Indica o fim lógico do seu programa. Qualquer texto a seguir é ignorado, mas pode ser lido por meio do manipulador de arquivos DATA. |
__ARQUIVO__ | Representa o nome do arquivo no ponto do programa em que ele é usado. Não interpolado em strings. |
__LINHA__ | Representa o número da linha atual. Não interpolado em strings. |
__PACOTE__ | Representa o nome do pacote atual em tempo de compilação ou indefinido se não houver pacote atual. Não interpolado em strings. |
Variáveis Especiais de Expressão Regular
$ digito | Contém o texto correspondido pelo conjunto correspondente de parênteses no último padrão correspondido. Por exemplo, $ 1 corresponde a tudo o que estava contido no primeiro conjunto de parênteses na expressão regular anterior. |
$ & | A string correspondida pela última correspondência de padrão bem-sucedida. |
$ MATCH | |
$ ` | A string anterior foi correspondida pela última correspondência de padrão bem-sucedida. |
$ PREMATCH | |
$ ' | A sequência que segue o que foi correspondido pela última correspondência de padrão bem-sucedida. |
$ POSTMATCH | |
$ + | O último colchete correspondente ao último padrão de pesquisa. Isso é útil se você não sabe qual conjunto de padrões alternativos foi correspondido. Por exemplo: / Versão: (. *) | Revisão: (. *) / && ($ rev = $ +); |
$ LAST_PAREN_MATCH |
Variáveis Especiais de Manipulação de Arquivos
$ | | Se definido como diferente de zero, força um fflush (3) após cada gravação ou impressão no canal de saída atualmente selecionado. |
$ OUTPUT_AUTOFLUSH | |
$% | O número da página atual do canal de saída atualmente selecionado. |
$ FORMAT_PAGE_NUMBER | |
$ = | O comprimento da página atual (linhas imprimíveis) do canal de saída atualmente selecionado. O padrão é 60. |
$ FORMAT_LINES_PER_PAGE | |
$ - | O número de linhas restantes na página do canal de saída atualmente selecionado. |
$ FORMAT_LINES_LEFT | |
$ ~ | O nome do formato de relatório atual para o canal de saída atualmente selecionado. O padrão é o nome do filehandle. |
$ FORMAT_NAME | |
$ ^ | O nome do formato do topo da página atual para o canal de saída atualmente selecionado. O padrão é o nome do filehandle com _TOP anexado. |
$ FORMAT_TOP_NAME |