ActivePerl Hashes Basics de ActivePerl - Parte 10 Introdução Esta é parte de minha série 10, Noções básicas de ActivePerl. Um hash é como um array, mas não exatamente o mesmo. Nesta parte do tutorial nós olhamos para o hash de ActivePerl. Nota: Se você não pode ver o código ou se você acha que alguma coisa está faltando (link quebrado, imagem ausente), apenas contacte-me em [email protected]. Ou seja, contacte-me para o menor problema que você tem sobre o que você está lendo.
A Conteúdo Hash Exemplo A lista a seguir mostra algumas frutas e suas cores: Apple => purple Banana => Pear amarelo => verde limão => verde Na lista vemos que a maçã é roxo, banana é amarela, etc. O => sinal apenas mostra que o item à esquerda corresponde ao item à direita. Esta é uma lista de hash. Vejamos uma lista de matriz típico; uma lista de nomes de alguns funcionários em uma empresa: John 0 1 Mary 2 Pedro 3 Augustine 4 Angela 5 6 Susan Martin Na lista de matriz a primeira coluna deve estar sempre índices; enquanto que a segunda coluna pode ter números ou strings.
Em uma lista de hash a primeira coluna não é necessariamente índices; ela pode ser feita de números e /ou cadeias de caracteres; a segunda coluna, também pode ser feita de números e /ou cadeias de caracteres. A diferença entre uma lista de hash e uma lista de matriz é que para uma lista de matriz a primeira coluna sempre consiste em índices (contando os números de zero), mas para uma lista de hash a primeira coluna podem ser números e /ou cordas. A segunda coluna para uma lista de matriz ou de hash pode ser qualquer coisa (números e /ou cordas).
Para os dois exemplos acima, a lista de hash tem cordas para a primeira coluna ea lista de matriz tem seus índices incondicionais. O restante deste tutorial vai lidar com hashes. Criando um Hash A sintaxe para criar um hash é: my% hashName = (key1 => value1, key2 => value2, key3 => value3, ...); Você começa com a palavra reservada, meu, então um espaço. Depois você tem o símbolo%, seguido do nome do hash. O nome do hash precedido por% é a variável de hash. Depois que você tem o operador de atribuição. Então você tem a lista de hash entre parênteses (entre parênteses).
Olhando para o exemplo de hash acima, a primeira coluna é chamado as teclas; A segunda coluna é chamado os valores. Você digita-los como tal dentro dos parênteses. Cada elemento de hash dentro dos suportes começa com a chave, seguido pela => sinal (isto é, o sinal de igual seguido pela maior que o sinal), então o valor correspondente. Antes de digitar o próximo elemento, você tem que digitar uma vírgula primeiro. Claro que, o último elemento não tem uma vírgula antes de os suportes de fecho.
Bem, depois que os colchetes de fechamento você tem o ponto e vírgula; que indica o final de uma instrução ActivePerl. Se o valor é uma cadeia que é digitado nas faixas entre aspas (simples ou duplas). Se o valor for um número, não é digitado entre aspas. Você pode dar o nome, fruitColor ao exemplo fruta acima. A declaração a seguir cria o hash em ActivePerl: my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão => "verde"); Note-se que nas faixas as chaves não estão entre aspas.
A afirmação acima pode ser digitado no código ordenadamente como segue: my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão => "verde"); Acessando um valor de hash A sintaxe para acessar um valor de hash é: $ hashName {'chave'} Você começa com um símbolo $, seguido do nome de hash e, em seguida, um par de chaves. Dentro das chaves, você tem a chave (entre aspas simples ou duplas) do valor correspondente. Assim, para aceder a cadeia roxo acima, você deverá digitar: $ fruitColor {'Maçã'} Nesta expressão da chave tem de estar entre aspas, (simples ou duplas).
No entanto, ao criar o hash as chaves não estão entre aspas. Esta expressão devolve o valor correspondente para a chave. Alterar um valor de hash Você usa a expressão acima para alterar um valor de hash da seguinte forma: $ hashName {'chave'} = newValue; Então, para mudar a cor da maçã no hash do roxo ao vermelho, você deverá digitar: $ fruitColor {'Maçã'} = "red"; Leia e tente o seguinte código, onde a cor inicial de maçã é exibida e, em seguida, mudou e re-exibido.
use strict; print "Content-Type: text /html \\ n \\ n"; my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão => "verde"); print $ fruitColor {'Maçã'}; imprimir "$ fruitColor {'Maçã'} =" red "; print $ fruitColor {'Maçã'};. Acessando com uma variável no lugar de uma chave Você pode acessar um valor com uma variável no lugar de uma chave A seguinte segmento de código ilustra isso: my $ herKey = "Apple"; print $ fruitColor {$ herKey}; Funções de hash O hash tem apenas funções como a matriz tem funções olhamos para algumas funções hash abaixo A cada função, a sintaxe para usar a cada função.
. é: cada (% HashName) Essa expressão retorna o próximo par chave /valor ou a próxima chave, dependendo do que é chamado o contexto da lista ou contexto escalar Em nosso código abaixo é o próximo par chave /valor que será devolvido.. No código abaixo, eu uso o hash acima com quatro elementos Portanto, se você usar a função each quatro vezes você vai ter os quatro pares de chave /valor diferentes Leia e tente o seguinte código: use strict; imprimir "Content-Type..
: text /html \\ n \\ n "; minha% fruitColor = (Apple =>" roxo ", Banana =>" amarelo ", Pêra =>" verde ", Limão =>" verde "); imprimir cada (fruitColor%); print "impressão de cada uma (fruitColor%); print" impressão de cada uma (fruitColor%); print "impressão de cada uma (fruitColor%); print" No meu computador eu tinha o seguinte resultado: Bananayellow Applepurple Lemongreen Peargreen Bem, a chave eo valor para cada par não estão separados; não vamos nos preocupar com isso por enquanto. A ordem dos pares de chave /valor não é a mesma ordem em que digitamos-los no hash.
Basta notar que esta ordem não pode ser pré-determinado. Assim, a cada função irá retornar o próximo par chave /valor, sob certas condições. Ela começa com o que considera como o primeiro, em seguida, se for chamado novamente, ele retorna o que considera como o próximo, e assim por diante. Você o programador ActivePerl não pode saber a ordem em que os elementos serão devolvidos. As teclas de função A sintaxe da função é teclas: teclas (% hashName) Devolve uma lista (que pode ser realizada por uma matriz) de todas as chaves em um hash.
Leia e tente o seguinte código: use strict; print "Content-Type: text /html \\ n \\ n"; my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão => "verde"); meusarr = chaves (fruitColor%); imprimirarr; A ordem das chaves voltar novamente não é predeterminada (e não a forma como eles foram digitados). Os valores da função A sintaxe para a função de valores é: Valores (% hashName) A função de valores se comporta de maneira semelhante à função chaves exceto que ela retorna uma lista de valores no hash e não uma lista de teclas.
Leia e tente o seguinte código: use strict; print "Content-Type: text /html \\ n \\ n"; my% fruitColor = (Apple => "roxo", Banana => "amarelo", Pêra => "verde", Limão =>