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 |