Tutorial Perl

O que รฉ Perl?

Perl รฉ uma linguagem de programaรงรฃo dinรขmica, interpretada e de alto nรญvel, de uso geral. Perl รฉ um termo que significa โ€œPractical Extraction and Reporting Languageโ€, embora nรฃo exista um acrรดnimo para Perl. Foi introduzido por Larry Wall em 1987. A linguagem Perl foi especialmente projetada para ediรงรฃo de texto. Mas agora รฉ amplamente utilizado para diversos fins, incluindo administraรงรฃo de sistemas Linux, programaรงรฃo de rede, desenvolvimento web, etc.

Visรฃo geral das linguagens de programaรงรฃo

Vamos colocar isso de uma maneira simples. Embora os computadores entendam apenas 0 e 1 (linguagem binรกria/linguagem de mรกquina/[linguagem de baixo nรญvel]), รฉ muito difรญcil programar em uma linguagem binรกria para nรณs, humanos. Perl รฉ uma linguagem de programaรงรฃo que utiliza elementos de linguagem natural, palavras que sรฃo usadas na lรญngua inglesa comum e รฉ, portanto, mais fรกcil de entender pelos humanos [linguagem de alto nรญvel]. Agora hรก um problema; os computadores nรฃo conseguem compreender linguagens de alto nรญvel, que nรณs, humanos, podemos compreender facilmente. Para isso, precisamos de algo que possa traduzir a linguagem de alto nรญvel para a linguagem de baixo nรญvel. Aqui o intรฉrprete vem em nosso auxรญlio. O intรฉrprete รฉ um software que converte o programa escrito em linguagem de alto nรญvel em linguagem de baixo nรญvel para que o computador entenda e execute as instruรงรตes escritas no programa. Portanto, Perl รฉ um linguagem de programaรงรฃo interpretada.

Onde o Perl รฉ usado?

O poder da linguagem de script Perl pode ser implementado em muitos campos. O uso mais popular do Perl รฉ no desenvolvimento da Web. Perl tambรฉm รฉ usado para automatizar muitas tarefas nos servidores da Web e outros trabalhos de administraรงรฃo, ele pode gerar e-mails automaticamente e limpar sistemas. Perl ainda รฉ usado para seu propรณsito original, ou seja, extrair dados e gerar relatรณrios. Ele pode produzir relatรณrios sobre o uso de recursos e verificar problemas de seguranรงa em uma rede. Por esse motivo, Perl se tornou uma linguagem popular usada tambรฉm em desenvolvimento web, redes e bioinformรกtica. Alรฉm de tudo isso, Perl tambรฉm pode ser usado para programaรงรฃo CGI.

Perl tambรฉm pode ser utilizado para criaรงรฃo e manipulaรงรฃo de imagens. Alรฉm da rede via telnet, FTP, etc., criaรงรฃo de interface grรกfica de usuรกrio, eletrรดnica VLSI e criaรงรฃo de filtros de e-mail para reduzir prรกticas de spam sรฃo alguns casos de uso de Perl.

Perl tambรฉm รฉ conhecido pela implementaรงรฃo de prรกticas de POO (programaรงรฃo orientada a objetos) e suporta todas as formas de heranรงa (simples, mรบltipla e diamante), polimorfismo e encapsulamento. Perl รฉ flexรญvel o suficiente para suportar prรกticas Procedural e POO simultaneamente. Perl tambรฉm tem mรณdulos extras que permitem que vocรช escreva ou use/reutilize cรณdigo escrito em Python, PHP, PDL, TCL, Oitava, Java,C, C++, Basic, Ruby e Lua em seu script Perl. Isso significa que vocรช pode combinar Perl com esses recursos extras linguagens de programaรงรฃo em vez disso, reescrever o cรณdigo existente.

Aplicaรงรตes da linguagem de programaรงรฃo Perl

Aplicaรงรตes da linguagem de programaรงรฃo Perl

Por que usar Perl?

ร‰ verdade que existem outras linguagens de programaรงรฃo que podem ser usadas para fazer todas as coisas mencionadas acima, entรฃo por que vocรช deveria usar Perl especificamente? Perl รฉ muito fรกcil de aprender, especialmente se vocรช tiver experiรชncia em programaรงรฃo de computadores. Perl foi projetado para ser fรกcil de ser escrito e compreendido por humanos, em vez de facilitar o processamento por computadores. Ele usa expressรตes regulares. Seu estilo natural de linguagem รฉ diferente de outras linguagens de programaรงรฃo que usam gramรกtica e sintaxe especรญficas; portanto, Perl รฉ muito flexรญvel e nรฃo impรตe nenhuma maneira especรญfica de pensar em uma soluรงรฃo ou problema. Perl รฉ extremamente portรกtil. Ele pode rodar em qualquer sistema operacional que tenha o interpretador Perl instalado, entรฃo รฉ independente de plataforma. Todos Linux OperaOs sistemas ting vรชm instalados com Perl, entรฃo vocรช pode comeรงar a codificaรงรฃo Perl no Linux imediatamente. Isso รฉ diferente dos scripts Shell, onde o cรณdigo muda com o sabor da distribuiรงรฃo Linux que estรก sendo usada, tornando-o cada vez menos portรกtil Pequenas tarefas especรญficas em Perl tornam-se muito fรกceis e rรกpidas. Ao longo deste tutorial Perl para iniciantes, vocรช aprenderรก como codificar programas pequenos e rรกpidos para tarefas especรญficas. Vejamos um exemplo simples do clรกssico programa Hello World, usado para comeรงar a aprender qualquer linguagem de programaรงรฃo que tenha UNIX como raiz:

Exemplo: Perl olรก mundo

Exemplo simples de Perl

#!/usr/bin/perl
print "Hello, world!";

Saรญda:

Olรก mundo!

As duas linhas de cรณdigo acima imprimirรฃo Hello, world! Agora nรฃo foi muito simples e rรกpido? Alunos com conhecimento de C, C++ saberรก que sรฃo necessรกrias muito mais linhas de cรณdigo para obter a mesma saรญda nessas linguagens.

Vocรช pode estar se perguntando por que Perl รฉ tรฃo famoso na Web. ร‰ simples porque a maioria das coisas que acontecem na web sรฃo de TEXTO e Perl รฉ muito bom em processamento de texto. Se compararmos Perl com qualquer uma das linguagens, entรฃo Perl serรก a melhor linguagem, boa no manuseio de arquivos, processamento de texto e relatรณrios de saรญda

Uma das melhores vantagens do Perl รฉ que ele รฉ podem ser utilizados gratuitamente.

A comunidade Perl acredita firmemente que o software deve estar disponรญvel gratuitamente, ser livremente modificรกvel e livremente distribuรญvel. Vรกrios voluntรกrios da comunidade Perl se esforรงam para tornar a linguagem de programaรงรฃo a melhor possรญvel.

Vantagens e desvantagens do Perl

Vantagens: Desvantagens:

Vantagens do Perl

Desvantagens do Perl

  • Comparado com outras linguagens de programaรงรฃo, Perl รฉ mais poderoso para manipulaรงรฃo e anรกlise de texto
  • Esta รฉ uma linguagem interpretada com tempo de execuรงรฃo rรกpido, pois nรฃo hรก necessidade de compilar um script Perl
  • Simples e fรกcil de programar e entender.
  • ร‰ orientado a objetos.
  • A biblioteca CPAN facilita o desenvolvimento em Perl (aprenderemos mais sobre isso mais adiante no assunto).
  • Usado no desenvolvimento Web principalmente para gateways de pagamento.
  • Usado em automaรงรฃo e para testar a maioria dos itens relacionados a rede e armazenamento.
  • Hรก suporte mรญnimo ร  GUI em comparaรงรฃo com outras linguagens de programaรงรฃo.
  • Vocรช precisa consultar mรณdulos de biblioteca complexos que nรฃo sรฃo tรฃo fรกceis de entender (nรฃo se assuste quando vocรช souber como fazer tudo serรก fรกcil).
  • Compreender padrรตes complexos requer experiรชncia.

Vamos comeรงar

Com conhecimento suficiente sobre a histรณria do Perl e os conceitos bรกsicos de programaรงรฃo de computadores necessรกrios para a codificaรงรฃo em Perl, รฉ hora de mergulharmos e comeรงarmos a usar o Perl. O prรณximo capรญtulo ensinarรก como vocรช pode configurar o Perl em seu sistema e se preparar para a jornada de codificaรงรฃo em Perl. Este tutorial de script Perl usarรก o Linux como o sistema operacional que os alunos usarรฃo para codificaรงรฃo em Perl.

Baixe e instale Perl โ€“ Windows, Mac e Linux

Como obter Perl?

Boas notรญcias vocรช provavelmente tem!

Mas se vocรช ainda nรฃo conseguir encontrรก-lo em seu sistema, ainda poderรก obtรช-lo gratuitamente.

Para descobrir se vocรช jรก possui o Perl instalado, entre na linha de comando e digite: perl -v

Como baixar Perl

O comando exibirรก a versรฃo do Perl se estiver instalado. Neste caso, a versรฃo รฉ v5.14.2. Mas se nรฃoโ€ฆ nรฃo entre em pรขnicoโ€ฆ

UnixTutorial PERL para iniciantes - guia completo Jรก instalado Vem prรฉ-instalado com Perl, embora possa ser necessรกrio atualizar para a versรฃo mais recente.
Mac OS Tutorial PERL para iniciantes - guia completo Jรก instalado OSX vem com Perl prรฉ-instalado, embora possa ser necessรกrio atualizรก-lo para a versรฃo mais recente
WindowsTutorial PERL para iniciantes - guia completo Precisa instalar Duas opรงรตes estรฃo disponรญveis

  1. Strawberry Perl รฉ uma distribuiรงรฃo binรกria de cรณdigo aberto de Perl para o Windows SO. Inclui um compilador e mรณdulos prรฉ-instalados que oferecem a capacidade de instalar mรณdulos XS CPAN diretamente do CPAN
  2. ActiveState perl fornece uma distribuiรงรฃo binรกria de Perl (para muitas plataformas), bem como seu prรณprio gerenciador de pacotes Perl (PPM)

Atualizando Perl no Linux:

Se vocรช precisar atualizar a versรฃo Perl, basta digitar uma รบnica linha de comando

sudo apt-get install perl

e relaxe. O resto serรก resolvido. Apenas certifique-se de ter uma conexรฃo ativa com a Internet.

Atualizar PERL no Linux

Atualizar PERL no Linux

Instalar perl para Windows:

Primeiro, baixe o Active Perl deste link. Siga estas etapas para instalar o ActivePerl em Windows sistema. Veja as capturas de tela abaixo para o mesmo.

Etapa 1 - Depois de baixar o instalador e iniciar a instalaรงรฃo vocรช verรก a janela abaixo, clique em prรณximo para prosseguir.

Como instalar Perl em Windows

Etapa 2 - Aceite o contrato de licenรงa para prosseguir com a instalaรงรฃo.

Como instalar Perl em Windows

Etapa 3 - Abaixo estรฃo os diferentes pacotes que serรฃo instalados. Por padrรฃo, todos estarรฃo selecionados. A รบnica coisa diferente รฉ o PPM (Perl Package Manager). Este รฉ o utilitรกrio fornecido pelo Active Perl para instalar mรณdulos ou bibliotecas Perl externas em seu sistema. Clique em Prรณximo para prosseguir.

Instalando Perl em Windows

Etapa 4 - Estes sรฃo diferentes tipos de extensรตes Perl que podem ser usadas para Perl. Usaremos principalmente .Pl, .Plx e .Pm para Perl. Os mรณdulos Perl basicamente usam .Pm como extensรฃo de arquivo para se referir a um arquivo de biblioteca. Selecione todas as opรงรตes e clique no botรฃo Avanรงar.

Instalando Perl em Windows

Etapa 5 - Clique no botรฃo Instalar para prosseguir com a instalaรงรฃo.

Instalando Perl em Windows

Etapa 6 - Uma vez instalado, execute o comando 'Perl โ€“v' para verificar se o Perl foi instalado com sucesso em seu sistema.

Instalaรงรฃo PERL em Windows

Hรก muitas coisas que precisam ser discutidas para configurar o ambiente Perl tanto no Linux quanto no Windows, pois nรฃo haverรก muitos arquivos de biblioteca incluรญdos nesta instalaรงรฃo. Vocรช precisa instalรก-los manualmente. Vocรช pode instalรก-los manualmente usando CPAN(Comprehensive Perl Archive Network) ou PPM que funciona somente para janelas perl. Mas esses arquivos nรฃo sรฃo obrigatรณrios para comeรงar a codificar em Perl.

Alรฉm desta configuraรงรฃo do Windows, vocรช pode usar Windows Novo recurso do subsistema Linux do Windows 10 e uso para executar cรณdigo Perl

Primeiro programa Perl

Hello world!

Exemplo Perl: Olรก Mundo

#!/usr/bin/perl -w
#this is just a commentโ€ฆ
print "Hello World";

Nรฃo se preocupe se vocรช nรฃo entender este texto. Tudo ficarรก claro em breve. Venha e dรช uma olhada por linha:

#!/usr/bin/perl		

Isso diz ao Operating System para executar este arquivo com o programa localizado em /usr/bin/perl Alguns IDEs nรฃo precisam desta linha. Se for essencial, vocรช deve escrever aqui um caminho para o seu intรฉrprete. Lembrar! Esta linha especial deve estar no inรญcio do seu programa e deve comeรงar em #! usar avisos; Este รฉ outro comando especial que diz ao intรฉrprete para exibir quaisquer avisos, ou seja, -w que ativa avisos globalmente.

print "Hello World";		

A instruรงรฃo de impressรฃo escreve texto na tela. O ponto e vรญrgula no final da linha informa ao interpretador Perl que a instruรงรฃo foi concluรญda. Vocรช deve colocar um ponto e vรญrgula no final de cada instruรงรฃo no cรณdigo Perl. Observe as aspas (โ€œ). ร‰ necessรกrio para instruรงรตes de impressรฃo. Salve o script acima como firstprog.pl

On Windows

Se vocรช tiver o Strawberry instalado, basta clicar em Executar. Vocรช tambรฉm pode executar a interface de linha de comando e escrever no console:

C:\> perl path\firstprog.pl		

ou, se perl.exe nรฃo estiver no seu caminho:

C:\> c:\perl\bin\perl.exe firstprog.pl		

No Linux/Unix

Basta abrir o Terminal e escrever:

perl firstprog.pl		

Se vocรช nรฃo conseguir executar o programa, certifique-se de ter elegibilidade para executรก-lo. Digite no Terminal:

chmod +x firstprog.pl		

Seu programa agora รฉ executรกvel e pronto para ser executado. Para executar, escreva:

./firstprog		

Instale mรณdulos cpan menos

Mรณdulos sรฃo conjuntos de cรณdigos usados โ€‹โ€‹para realizar tarefas que realizam operaรงรตes comuns em diversos programas. Se vocรช usar mรณdulos Perl, nรฃo serรก necessรกrio reescrever os cรณdigos para realizar a mesma operaรงรฃo. Perl pode fazer uso de tais bibliotecas externas de cรณdigos. Uma das melhores bibliotecas รฉ a CPAN. Significa Perl abrangente Archive Network e contรฉm uma grande quantidade de mรณdulos Perl para vocรช usar. ร‰ uma comunidade ou rede de um grande nรบmero de desenvolvedores que contribuem com esses mรณdulos. Ao instalar o suporte para mรณdulos CPAN em seu mรณdulo perl, vocรช pode usar os mรณdulos CPAN e facilitar seu trabalho. A maioria dos mรณdulos Perl sรฃo escritos em Perl, alguns usam XS (eles sรฃo escritos em C), entรฃo requerem um compilador C (รฉ fรกcil obter essa configuraรงรฃo โ€“ nรฃo entre em pรขnico. Os mรณdulos podem ter dependรชncias de outros mรณdulos (quase sempre no CPAN) e nรฃo podem ser instalados sem eles (ou sem uma versรฃo especรญfica deles). Vale a pena ler atentamente a documentaรงรฃo para as opรงรตes abaixo. Muitos mรณdulos no CPAN agora exigem uma versรฃo recente do Perl (versรฃo 5.8 ou superior). Instale cpanminus, um script para obter, descompactar, construir e instalar mรณdulos do CPAN para facilitar a instalaรงรฃo de outros mรณdulos (vocรช nos agradecerรก mais tarde). Para instalar App-cpanminus mรณdulos perl, na linha de comando digite:

cpan App::cpanminus

cpan App::cpanminus Certifique-se de ter conexรฃo com a internet enquanto os mรณdulos perl estรฃo sendo baixados e instalados.

Instalando mรณdulos cpan menos

Agora instale qualquer mรณdulo:

cpan โ€“i <Module_Name>.		

Vejamos um exemplo de instalaรงรฃo de um mรณdulo File::Data(ร‰ uma interface para acessar os dados do arquivo).

Instalando mรณdulos cpan menos

Variรกvel Perl

Agora falaremos sobre variรกveis. Vocรช pode imaginar uma variรกvel como um tipo de contรชiner que contรฉm um ou mais valores. Uma vez definido, o nome da variรกvel permanece o mesmo, mas o valor ou valores mudam continuamente.

Existem 3 tipos de variรกveis:

Tipos de variรกveis โ€‹โ€‹em Perl

Tipos de variรกveis โ€‹โ€‹em Perl

Os mais fรกceis sรฃo os escalares, e este รฉ o nosso assunto de hoje

Variรกvel escalar

Este tipo de variรกvel contรฉm um รบnico valor.

Seu nome comeรงa com um cifrรฃo e um identificador Perl (รฉ o nome da nossa variรกvel).

Variรกvel escalar em Perl

Variรกvel escalar em Perl

Convenรงรฃo de nomes

Se vocรช estiver familiarizado com outras linguagens de programaรงรฃo, saberรก que existem certas regras sobre como nomear variรกveis. Da mesma forma, Perl tem trรชs regras para nomear escalares.

  1. Todos os nomes escalares comeรงarรฃo com $. ร‰ fรกcil lembrar de prefixar cada nome com $. Pense nisso como um $ escalar.
  2. Como PHP. apรณs o primeiro caracter $, que รฉ especial em Perl, caracteres alfanumรฉricos, ou seja, de a a z, de A a Z e de 0 a 9 sรฃo permitidos. O caractere sublinhado tambรฉm รฉ permitido. Use sublinhado para dividir os nomes das variรกveis โ€‹โ€‹em duas palavras. 'Mas o primeiro caractere nรฃo pode ser um nรบmero'
  3. Embora os nรบmeros possam fazer parte do nome, eles nรฃo podem vir imediatamente depois de $. Isso implica que o primeiro caractere depois de $ serรก um alfabeto ou o sublinhado. Aqueles que vรชm de C/C++ experiรชncia deve ser imediatamente capaz de reconhecer a semelhanรงa. Exemplos

Exemplo Perl:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Estes, no entanto, nรฃo sรฃo nomes legais de variรกveis โ€‹โ€‹escalares.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

A regra geral diz que quando Perl tem apenas um de alguma coisa, isso รฉ um escalar. Os escalares podem ser lidos em dispositivos e podemos usรก-los em nossos programas.

Dois tipos de dados escalares

  1. Numbers
  2. Cordas

Numbers:

Neste tipo de dados escalares poderรญamos especificar:

  • inteiros, simplesmente sรฃo nรบmeros inteiros, como 2, 0, 534
  • nรบmeros de ponto flutuante, sรฃo nรบmeros reais, como 3.14, 6.74, 0.333

Variรกveis โ€‹โ€‹numรฉricas em Perl

Aviso: Em geral, o interpretador Perl vรช nรบmeros inteiros como nรบmeros de pontos flutuantes. Por exemplo, se vocรช escrever 2 em seus programas, Perl verรก como 2.0000

Literais inteiros:

Consiste em um ou mais dรญgitos, opcionalmente precedidos por mais ou menos e contendo sublinhados.

Exemplos Perl:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Como vocรช pode ver, nรฃo รฉ nada de especial. Mas acredite, este รฉ o tipo mais comum de escalares. Eles estรฃo por toda parte.

Literais de ponto flutuante:

Consiste em dรญgitos, opcionalmente menos, ponto decimal e expoente.

Exemplos Perl:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E โ€“ this means the same the lowercase version -3.6e-20

Literais de ponto flutuante em Perl

Representaรงรฃo octal, hexadecimal e binรกria:

ร‰ uma alternativa ao sistema decimal. Permita-me mostrar a representaรงรฃo octal, hexadecimal e binรกria. Uma pequena tabela apresenta todas as informaรงรตes importantes sobre esses estilos estranhos:

Representaรงรฃo Base Prosseguido por
Octal 8 0 (zero)
Hexadecimal 16 0x
Binรกrio 2 0b

Exemplos Perl:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Todos esses valores para Perl significam o mesmo. Perl nรฃo armazena os valores no mesmo formato. Ele converterรก internamente esses valores hexadecimais, binรกrios e octais em decimais.

A atribuiรงรฃo รฉ a operaรงรฃo mais comum em um escalar e รฉ muito simples. Perl usa esse sinal de igual. Ele pega um valor da expressรฃo do lado direito e coloca esse valor em nossa variรกvel.

Vejamos exemplos:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

Alรฉm do mais, vocรช pode colocar na variรกvel nรฃo apenas um nรบmero, mas tambรฉm uma expressรฃo.

$z = 6 + 12               # give $z value of 18

Cordas

Strings: tambรฉm รฉ um tipo de escalar muito simples.

O comprimento mรกximo de uma string em Perl depende da quantidade de memรณria que o computador possui. Nรฃo hรก limite para o tamanho da string, qualquer quantidade de caracteres, sรญmbolos ou palavras pode compor suas strings. A string mais curta nรฃo possui caracteres. O mais longo pode preencher toda a memรณria do sistema. Os programas Perl podem ser escritos inteiramente em conjunto de caracteres ASCII de 7 bits. Perl tambรฉm permite que vocรช adicione qualquer conjunto de caracteres de 8 ou 16 bits, tambรฉm conhecido como. caracteres nรฃo ASCII em literais de string. Perl tambรฉm adicionou suporte para Unicode UTF-8.

Tipos de strings em Perl

Assim como os nรบmeros, existem dois tipos diferentes de strings:

  • Literais de string com aspas simples
  • Double cita literais de string

Literais de string entre aspas simples

Aspas simples sรฃo usadas para incluir dados que vocรช deseja que sejam interpretados literalmente. Um pequeno exemplo e tudo deve ficar claro:

Exemplos Perl:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

Saรญda:

รฉ $num

Aqui, devido ao valor de aspas simples de $num nรฃo ser utilizado e os caracteres literais '$','n', 'u' e 'm' sรฃo adicionados ao valor de $txt

Double- literais de string entre aspas

Double aspas sรฃo usadas para incluir dados que precisam ser interpolados antes do processamento. Isso significa que caracteres de escape e variรกveis โ€‹โ€‹nรฃo sรฃo simplesmente inseridos literalmente em operaรงรตes posteriores, mas sรฃo avaliados no local. Caracteres de escape podem ser usados โ€‹โ€‹para inserir novas linhas, tabulaรงรตes, etc.

Exemplos Perl:

$num = 7; 
$txt = "it is $num"; 
print $txt;

Saรญda:

รฉ 7

Aqui, devido ร s aspas duplas, o valor de $num รฉ adicionado ao valor de $txt

Double-quotes interpola variรกveis โ€‹โ€‹escalares e de array, mas nรฃo hashes. Por outro lado, vocรช pode usar aspas duplas para interpolar fatias de arrays e hashes.

Misterioso \n

Considere o seguinte programa

Exemplos Perl:

print "hello \n";

Saรญda:

Olรก

Perl nรฃo exibe apenas 'hello\n', mas apenas 'hello'. Por que? Porque '\n' รฉ um sinal especial e significa que vocรช deseja ir para uma nova linha enquanto exibe o texto em seu programa. imprima โ€œolรก\n nova linhaโ€; Prรณxima pergunta: hรก algum outro sinal especial? Sim, eles estรฃo! Mas nรฃo se preocupe, apenas alguns. Confira a tabela abaixo

Construir Descriรงรฃo
\n nova linha
\r retorno
\t aba
\f alimentaรงรฃo de formulรกrio
\b retrocesso
\a sino
\e escapar
\ 007 qualquer valor ASCII octal (aqui, 007 = sino)
\x7f qualquer valor hexadecimal (aqui, 7f = excluir)
\\ barra invertida
\ โ€ citaรงรฃo dupla
\l prรณxima letra minรบscula
\L todas as letras seguintes em minรบsculas atรฉ \E
\u prรณxima letra maiรบscula
\U todas as letras seguintes em maiรบsculas atรฉ \E
\E Terminar \L, \U

Eu sei, nรฃo existem 'sรณ alguns'... Mas acredite, vocรช precisa saber apenas

Variรกvel de sequรชncia de caracteres

ร‰ a mesma operaรงรฃo que vemos na atribuiรงรฃo de nรบmeros. Perl obtรฉm nossa string do lado direito do sinal de igual e coloca essa string em uma variรกvel.

Exemplos Perl:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

Saรญda:

tutorial 315

Como vocรช pode ver, vocรช pode colocar nรบmeros e strings nas mesmas variรกveis. Nรฃo hรก classe de variรกveis.

Concatenaรงรฃo de strings (ponto final):

O operador de concatenaรงรฃo โ€œ.โ€ une duas ou mais cordas. Lembrar! Se a string contiver aspas, retornos de carro, barras invertidas, todos esses caracteres especiais precisarรฃo ser escapados com uma barra invertida.

Exemplos de variรกveis โ€‹โ€‹Perl ' ':

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

Saรญda:

Tom รฉ o gato favorito da mรฃe

As cordas

โ€œ$aโ€, โ€œ$bโ€, รฉ concatenado e armazenado em โ€œ$cโ€ usando โ€œ.โ€ operador.

No finalโ€ฆ

Conversรฃo entre Numbers e cordas:

Como vocรช sabe, Perl converte automaticamente nรบmeros em string conforme necessรกrio. Como Perl sabe o que precisamos agora? Isto รฉ simples - tudo depende do operador (falaremos sobre operadores mais tarde, agora, apenas aceite que existem muitos operadores, diferentes para nรบmeros e strings). Se um operador espera um nรบmero, Perl usarรก o valor como um nรบmero . Se um operador espera uma string, Perl usarรก o valor como uma string. Em outras palavras, vocรช nรฃo precisa se preocupar com esse tipo de conversรฃo. Pequeno exemplo e tudo deve ficar claro:

Exemplos Perl:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

Saรญda:

71

o valor de $string รฉ convertido em um nรบmero inteiro e adicionado ao valor de $number.

O resultado da adiรงรฃo, 71, รฉ atribuรญdo a $resultado.

Escopo de uma variรกvel โ€“ modificadores de acesso

Podemos declarar um escalar em qualquer lugar do programa. Mas vocรช precisa especificar um modificador de acesso

Existem 3 tipos de modificadores

  1. my
  2. local
  3. A Nossa

Meu: Usando isto vocรช pode declarar qualquer variรกvel especรญfica dentro do bloco. ou seja, entre chaves.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Sem saรญda

A saรญda do programa nรฃo serรก nada!

Tutorial PERL para iniciantes - guia completo

No exemplo acima, vocรช verรก que existem duas variรกveis โ€‹โ€‹declaradas, uma estรก dentro do bloco if ($var_2) e a outra estรก fora do bloco If ($var). A variรกvel declarada fora do bloco serรก acessรญvel ao bloco if, mas a variรกvel que foi declarada dentro do bloco if nรฃo estarรก acessรญvel ao programa externo.

Local: Usando isso, podemos realmente mascarar os mesmos valores de variรกveis โ€‹โ€‹para valores diferentes sem realmente alterar o valor original da variรกvel, suponha que temos uma variรกvel $a para a qual o valor รฉ atribuรญdo 5, vocรช pode realmente alterar o valor dessa variรกvel por redeclarar a mesma variรกvel usando a palavra-chave local sem alterar o valor original da variรกvel que รฉ 5. Vamos ver como isso funciona com um exemplo.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

A saรญda do programa acima serรก desta maneira.

local, $ var = 3

global, $ var = 5

Desta forma podemos alterar o valor da variรกvel sem afetar o valor original.

Our: Uma vez que uma variรกvel รฉ declarada com o modificador de acesso โ€œourโ€, ela pode ser usada em todo o pacote. Suponha que vocรช tenha um mรณdulo Perl ou um pacote test.pm que possui uma variรกvel declarada com escopo our. Esta variรกvel pode ser acessada em qualquer script que utilize esse pacote.

Se vocรช leva a sรฉrio a programaรงรฃo em Perl, vocรช deve comeรงar seu programa com

#! / usr / local / bin / perl

use estrito;

Isso o ajudarรก a escrever um cรณdigo melhor e mais limpo. 'use strict' ativa o pragma estrito que farรก com que vocรช declare suas variรกveis โ€‹โ€‹com minha palavra-chave.

Esta รฉ uma boa prรกtica de programaรงรฃo

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Resultado: Erro

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

Saรญda:

10

Matriz Perl

O que รฉ matriz Perl?

Um Array รฉ um tipo especial de variรกvel que armazena dados na forma de uma lista; cada elemento pode ser acessado usando o nรบmero de รญndice que serรก exclusivo para cada elemento. Vocรช pode armazenar nรบmeros, strings, valores flutuantes, etc. em seu array. Isso parece รณtimo. Entรฃo, como criamos um array em Perl? Em Perl, vocรช pode definir um array usando o caractere '@' seguido do nome que deseja fornecer. Vamos considerar a definiรงรฃo de um array em Perl.

meu @array;

ร‰ assim que definimos um array em Perl; vocรช pode estar pensando em como precisamos armazenar dados nele. Existem diferentes maneiras de armazenar dados em um array. Isso depende de como vocรช vai usรก-lo.

my @array=(a,b,c,d);
print @array;

Saรญda:

ABCD

Este รฉ um array com 4 elementos.

O รญndice do array comeรงa em 0 e termina no tamanho mรกximo declarado; neste caso, o tamanho mรกximo do รญndice รฉ 3.

Exemplo de matriz Perl

Exemplo de matriz Perl

Vocรช tambรฉm pode declarar um array da maneira acima; a รบnica diferenรงa รฉ que ele armazena dados em um array considerando um espaรงo em branco como delimitador. Aqui, qw() significa palavra de citaรงรฃo. O significado desta funรงรฃo รฉ gerar uma lista de palavras. Vocรช pode usar o qw de vรกrias maneiras para declarar um array.

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

Saรญda:

abcdpqrsvxyz

Suponha que vocรช queira atribuir um valor ao 5th elemento de um array, como vamos fazer isso.

$matriz[4] ='e';

Matriz Sequencial

Matrizes sequenciais sรฃo aquelas onde vocรช armazena dados sequencialmente. Suponha que vocรช queira armazenar de 1 a 10 nรบmeros ou alfabetos az em uma matriz. Em vez de digitar todas as letras, vocรช pode tentar algo como abaixo โ€“

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

Saรญda:

12345678910

Tamanho da matriz Perl

Temos um array que jรก estรก disponรญvel e vocรช nรฃo sabe qual รฉ o tamanho desse array, entรฃo qual รฉ a maneira possรญvel de encontrรก-lo.

@array= qw/a b c d e/;
print $size=scalar (@array);

Podemos obter o tamanho de um array sem usar funรงรตes? Sim, nรณs podemos.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

Saรญda:

5

5

Matriz Dinรขmica

O mรฉtodo acima para declarar um array รฉ chamado matrizes estรกticas, onde vocรช sabe o tamanho de um array.

O que รฉ matriz dinรขmica?

Matrizes dinรขmicas sรฃo aquelas que vocรช declara sem especificar nenhum valor nelas. Entรฃo, quando exatamente armazenamos valores nesse array? Simples, nรณs os armazenamos durante o tempo de execuรงรฃo. Aqui estรก um programa simples para isso.

Estaremos usando algumas funรงรตes Perl integradas para realizar esta tarefa.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \nโ€;
# This is a special variable which stores the current value.
}

Saรญda:

Isto รฉ

tipo de dinheiro

mic

rr

y

A funรงรฃo split divide o conteรบdo da string em um array com base no delimitador fornecido a ela. Esta funรงรฃo tambรฉm eliminarรก o delimitador da string, neste caso รฉ 'a';

Push, Pop, shift, unshift para matrizes Perl:

Essas funรงรตes podem ser usadas em Perl para adicionar/excluir elementos do array.

  • Perl Push: adiciona um elemento de array no final de um array existente.
  • Perl Pop: remove o รบltimo elemento de um array.
  • Perl Shift: remove o primeiro elemento de um array.
  • Perl Unshift: adiciona um elemento no inรญcio de um array.

Funรงรตes de array em Perl

Vejamos um exemplo onde podemos usar as funรงรตes abaixo.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

Saรญda:

1ยบ: Seg Ter Qua

2ยบ quando push: Seg Ter Qua Qui

3ยบ quando sem turno: Sex Seg Ter Qua Qui

4ยบ quando pop: Sex Seg Ter Qua

5ยบ turno: Seg Ter Qua

Hashes Perl

Por que precisamos de Hash?

Jรก aprendemos sobre escalares e arrays nas seรงรตes anteriores.

O que exatamente os escalares fazem? Ele armazena apenas nรบmeros inteiros e strings.

O que exatamente os arrays fazem? ร‰ uma coleรงรฃo de escalares, onde vocรช acessa cada elemento de um array usando รญndices. Mas serรก uma boa ideia usar um array quando vocรช tem centenas e milhares de registros? Esqueceremos qual รญndice tem qual valor. Para superar esta situaรงรฃo temos algo como perl hash.

O que sรฃo hashes?

Um hash tambรฉm pode conter tantos escalares quanto o array puder conter. A รบnica diferenรงa รฉ que nรฃo temos nenhum รญndice, mas sim chaves e valores. Um hash pode ser declarado, comeรงando com% seguido do nome do hash. Vamos ver um exemplo de como podemos definir um hash Perl e como podemos diferenciรก-lo de um array

Considere um exemplo de trรชs pessoas e suas idades representadas em uma matriz.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

Saรญda:

Sainath33Krishna24 Shruthi25

Dessa forma, รฉ difรญcil saber as idades individuais, pois precisamos lembrar as localizaรงรตes do nome e da idade de todas as pessoas. Pode ser simples quando vocรช tem 3 nomes, mas quando vocรช tem 1000 ou mais? Vocรช sabe a resposta.

Hashes em Perl

Isso podemos superar usando um hash.

Exemplo de hash:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

Saรญda:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Agora declaramos um hash, รณtimo!! Mas, como podemos acessรก-lo ou imprimi-lo? Cada elemento do hash deve ser acessado com sua chave associada para a qual haverรก um valor atribuรญdo. Portanto, hรก um mapeamento individual entre cada chave e valor no hash.

Para imprimir a idade de qualquer pessoa, basta lembrar o nome dessa pessoa.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Vocรช deve estar se perguntando por que usei $hash{KeyName}, lembre-se de que um hash รฉ uma coleรงรฃo de escalares novamente. Portanto, podemos usar $ que representa escalar para acessar cada elemento hash.

Exemplo de Hash em Perl

Nota: Cada chave no hash deve ser รบnica ou substituirรก o seu valor, que foi atribuรญdo anteriormente.

Como podemos atribuir um hash a outro hash? Simples, da mesma forma que fazemos para

Tambรฉm podemos imprimir o hash inteiro.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

Saรญda:

Tom23

Adicionar hashes Perl

Como vocรช pode ver, jรก temos um hash% newHash e agora precisamos adicionar mais entradas nele.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

Saรญda:

Jim25John26Harry27

Chave de exclusรฃo Perl

Vocรช pode querer excluir uma entrada de um hash. ร‰ assim que podemos fazer isso.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Delete รฉ uma funรงรฃo embutida do Perl. Aqui, veremos um exemplo de atribuiรงรฃo de um hash a um array.

@array=%newHash;
print "@array";

Nota: Sempre que vocรช imprime um hash ou armazena hash em um array. A ordem pode sempre ser diferente. Nรฃo รฉ sempre a mesma coisa.

Podemos atribuir apenas chaves ou valores de um hash a um array.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

Para remover todas as entradas do hash, podemos atribuir diretamente o hash a nulo.

%newHash=();# Isso redefinirรก o hash sem entradas.

Declaraรงรตes Condicionais Perl

Podemos usar instruรงรตes condicionais em Perl. Entรฃo, o que sรฃo declaraรงรตes condicionais? Declaraรงรตes condicionais sรฃo aquelas em que vocรช realmente verifica algumas circunstรขncias a serem satisfeitas em seu cรณdigo.

Pense em um exemplo: vocรช estรก comprando algumas frutas e nรฃo gosta que o preรงo seja superior a 100 dรณlares. Entรฃo, a regra aqui รฉ 100 dรณlares.

Perl suporta dois tipos de instruรงรตes condicionais; eles sรฃo se e a menos que.

Perl se

Se o bloco de cรณdigo serรก executado, quando a condiรงรฃo for verdadeira.

Declaraรงรตes Condicionais Perl

my $a=5;
if($a==5)
{
   print "The value is $a";
}

Saรญda:

5

Perl se mais

Este parece ser bom. Vamos pensar em uma situaรงรฃo em que $a nรฃo seja 5.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

Saรญda:

O valor รฉ 10 โ€”FALHA

Dessa forma, podemos controlar apenas uma condiรงรฃo por vez. ร‰ uma limitaรงรฃo? Nรฃo, vocรช tambรฉm pode controlar vรกrias condiรงรตes usando ifโ€ฆ elsifโ€ฆ else.

Perl senรฃo se

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block โ€“ The value is $a";
}

Saรญda:

Bloco elsif executado โ€“O valor รฉ 5

No caso acima, o bloco elsif serรก executado porque $a รฉ igual a 5.

Pode haver situaรงรตes em que os blocos de cรณdigo if e elsif falharรฃo. Neste cenรกrio, o bloco de cรณdigo else serรก executado. Na verdade, vocรช pode eliminar a verificaรงรฃo de cรณdigo else se nรฃo quiser incluir.

Perl aninhado se

Nesse caso, vocรช pode usar o bloco de cรณdigo if em mais um bloco de cรณdigo if.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block โ€“ The value is $a";
    }

Saรญda:

Dentro do primeiro bloco else โ€“ O valor รฉ 1

Execute o mesmo cรณdigo alterando o valor de $a; vocรช pode descobrir o resto.

Perl a menos que

Vocรช jรก tem uma ideia do que if faz (se a condiรงรฃo for verdadeira, ele executarรก o bloco de cรณdigo). A menos que seja o oposto de if, a menos que o bloco de cรณdigo seja executado se a condiรงรฃo for falsa.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

Saรญda:

Dentro do primeiro bloco else โ€“ O valor รฉ 1

Adivinhe qual serรก o resultado. Vocรช estรก certo!!!!!. A saรญda serรก a instruรงรฃo print do bloco else. Por causa da condiรงรฃo em a menos que o bloco de cรณdigo seja verdadeiro, lembre-se de que o bloco a menos serรก executado apenas se a condiรงรฃo for falsa. Altere o valor de $a e execute o cรณdigo vocรช verรก a diferenรงa.

Perl usando if

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

Saรญda:

Dentro do outro bloco

Usando a menos que

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

Saรญda:

Dentro, a menos que bloqueie

Perl Loops โ€“ Estruturas de Controle

Perl suporta estruturas de controle semelhantes a outras linguagens de programaรงรฃo. Perl suporta quatro tipos de estruturas de controle para, foreach, while e Until. Usamos essas instruรงรตes para executar algum cรณdigo repetidamente.

Para loop Perl

Pois o bloco de cรณdigo serรก executado atรฉ que a condiรงรฃo seja satisfeita. Vamos dar um exemplo de como fazer um loop Perl em um array.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

Saรญda:

O valor do รญndice da matriz 0 รฉ 1

O valor do รญndice da matriz 1 รฉ 2

O valor do รญndice da matriz 2 รฉ 3

O valor do รญndice da matriz 3 รฉ 4

O valor do รญndice da matriz 4 รฉ 5

O valor do รญndice da matriz 5 รฉ 6

O valor do รญndice da matriz 6 รฉ 7

O valor do รญndice da matriz 7 รฉ 8

O valor do รญndice da matriz 8 รฉ 9

O valor do รญndice da matriz 9 รฉ 10

Aqui, na expressรฃo for (), hรก muitas instruรงรตes incluรญdas. Existe um significado para cada um deles.

for (inicializaรงรฃo; condiรงรฃo; incremento)

Aqui estรก outra maneira de usar for.

for(1..10)
{
    print "$_ n";
    print "\n";
}

Saรญda:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

A instruรงรฃo for each pode ser usada da mesma maneira que for; a principal diferenรงa รฉ que nรฃo temos nenhuma verificaรงรฃo de condiรงรฃo e incremento nisso.

Vamos dar o mesmo exemplo com foreach perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

Saรญda:

O valor รฉ 1

O valor รฉ 2

O valor รฉ 3

O valor รฉ 4

O valor รฉ 5

O valor รฉ 6

O valor รฉ 7

O valor รฉ 8

O valor รฉ 9

O valor รฉ 10

Foreach pega cada elemento de um array e atribui esse valor a $var para cada iteraรงรฃo. Tambรฉm podemos usar $_ para o mesmo.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

Saรญda:

O valor รฉ 1

O valor รฉ 2

O valor รฉ 3

O valor รฉ 4

O valor รฉ 5

O valor รฉ 6

O valor รฉ 7

O valor รฉ 8

O valor รฉ 9

O valor รฉ 10

Isso parece bom para acessar arrays. E quanto aos Hashes, como podemos obter chaves e valores de hash usando foreach?

Podemos usar foreach para acessar chaves e valores do hash fazendo um loop nele.

Para loop em Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

Saรญda:

Mickey

Tom

Jerry

Vocรช deve estar se perguntando: por que usamos chaves em foreach(). Keys รฉ uma funรงรฃo embutida do Perl onde podemos acessar rapidamente as chaves do hash. E quanto aos valores? Podemos usar a funรงรฃo de valores para acessar os valores do hash.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

Saรญda:

o valor รฉ 24

o valor รฉ 23

o valor รฉ 25

Perl enquanto

O loop Perl While รฉ uma estrutura de controle, onde o bloco de cรณdigo serรก executado atรฉ que a condiรงรฃo seja verdadeira.

O bloco de cรณdigo serรก encerrado somente se a condiรงรฃo for falsa.

Vamos dar um exemplo para o loop While do Perl.

Enquanto loop em Perl

Aqui estรก um problema que exigirรก a entrada do usuรกrio e nรฃo serรก encerrado atรฉ que o nรบmero fornecido seja '7'.

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

Saรญda:

Adivinhe um nรบmero entre 1 e 10

9

Adivinhe um nรบmero entre 1 e 10

5

Adivinhe um nรบmero entre 1 e 10

7

Vocรช adivinhou o nรบmero da sorte 7

No exemplo acima, a condiรงรฃo while nรฃo serรก verdadeira se inserirmos uma entrada diferente de '7'.

Se vocรช ver como o while funciona aqui, o bloco de cรณdigo serรก executado somente se a condiรงรฃo em um while for verdadeira.

Perl do-while

O loop Do while serรก executado pelo menos uma vez, mesmo se a condiรงรฃo na seรงรฃo while for falsa.

Vamos dar o mesmo exemplo usando do while.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

Saรญda:

10

9

8

7

6

5

4

3

2

1

Agora o valor รฉ menor que 1

Perl atรฉ

Atรฉ que o bloco de cรณdigo seja semelhante a menos que em uma instruรงรฃo condicional. Aqui, o bloco de cรณdigo serรก executado somente se a condiรงรฃo no bloco atรฉ for falsa.

Tomemos o mesmo exemplo que usamos no caso de um tempo.

Aqui estรก um problema que exigirรก a entrada do usuรกrio e nรฃo serรก encerrado atรฉ que o nome fornecido seja diferente de 'sai'.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

Saรญda:

Digite qualquer nome sai

Perl faรงa atรฉ:

Do Until pode ser usado apenas quando precisamos que uma condiรงรฃo seja falsa e deve ser executado pelo menos uma vez.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

Saรญda:

Digite qualquer nome Howard

Digite qualquer nome Sheldon

Digite qualquer nome sai

Execute cรณdigos de exemplo while, do-while, Until e do-until para ver a diferenรงa.

Perl Operator

O que รฉ a Operator?

OperaOs operadores em linguagem de computador indicam uma aรงรฃo que pode ser executada em algum conjunto de variรกveis โ€‹โ€‹ou valores que o computador pode compreender. Perl incorporou a maioria dos Operaoperadores da linguagem C. Perl tem muitos operadores em comparaรงรฃo com outras linguagens de programaรงรฃo. OperaOs operadores sรฃo categorizados como operadores aritmรฉticos, lรณgicos, relacionais e de atribuiรงรฃo.

Aritmรฉtica Operatores:

Operadores aritmรฉticos sรฃo aqueles que podem ser usados โ€‹โ€‹para realizar algumas operaรงรตes matemรกticas bรกsicas. Esses operadores aritmรฉticos sรฃo operadores binรกrios onde precisamos de dois argumentos para realizar uma operaรงรฃo bรกsica. Tambรฉm podemos utilizar operadores unรกrios para outras operaรงรตes bรกsicas; vocรช pode ver a diferenรงa nos exemplos abaixo.

Operator Descriรงรฃo Exemplo

+

Operaรงรฃo de adiรงรฃo usada para adicionar dois valores ou variรกveis

mantendo valores

$x=5+6; # ou

$y=6;

$z=$x+$y;

-

Operador de subtraรงรฃo usado para subtrair dois valores ou variรกveis โ€‹โ€‹que contรชm valores

$x=6-5; # ou

$y=6;

$z=$x-$y;

*

Operador de multiplicaรงรฃo usado para multiplicar dois valores ou variรกveis โ€‹โ€‹que contรชm valores

$x=6*5; # ou

$y=6;

$z=$x*$y;

/

Operador de divisรฃo usado para dividir dois valores ou variรกveis โ€‹โ€‹que contรชm valores

$x=36/6; # ou

$y=6;

$z=$x/$y;

**

O operador exponencial usado para fornecer o expoente e obter o valor.

Ex: 22 = 43 = 27

$x=5**5; # ou

$x=4;

$y=2;

$z=$x**$y;

%

Operador de mรณdulo usado para obter o lembrete durante a divisรฃo de dois valores ou variรกveis โ€‹โ€‹que contรชm valores

$x=5%2; # ou

$x=10;

$y=2;

$z=$x % $y;

++

Operador de adiรงรฃo unรกrio para incrementar o valor de uma variรกvel em 1

$x=5;

$ x ++;

Or

++$x;

-

Operador de subtraรงรฃo unรกrio para diminuir o valor de uma variรกvel em 1

$x=5;

$xโ€“; # pรณs-decremento

Or

โ€“$x;# prรฉ decremento

Exemplo para completar todas as operaรงรตes acima.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

Saรญda:

A soma de 10 e 2 รฉ 12

Sub de 10 e 2 รฉ 8

Mul de 10 e 2 รฉ 20

Div de 10 e 2 รฉ 5

Exp de 10 e 2 รฉ 100

Mod de 10 e 2 รฉ 0

Atribuiรงรฃo Operatores:

Os operadores de atribuiรงรฃo simplesmente atribuem valores ร s variรกveis, mas hรก mais uma coisa que precisamos lembrar aqui: os operadores de atribuiรงรฃo tambรฉm realizarรฃo operaรงรตes aritmรฉticas e atribuirรฃo o novo valor ร  mesma variรกvel na qual a operaรงรฃo รฉ executada.

Operator Descriรงรฃo Exemplo

+=

Operador de adiรงรฃo usado para adicionar e atribuir o valor ร  mesma variรกvel

$x=4;

$x+=10;

-=

Operador de subtraรงรฃo usado para subtrair e atribuir o valor ร  mesma variรกvel

$x=4;

$x-=10;

*=

Operador de multiplicaรงรฃo usado para adicionar e atribuir o valor ร  mesma variรกvel

$x=4;

$x*=10;

/=

Operador de divisรฃo usado para dividir e atribuir o valor ร  mesma variรกvel

$x=4;

$x/=10;

** =

Operador exponencial usado para obter o expoente e atribuir o valor ร  mesma variรกvel

$x=4;

$x**=10;

%=

Operador de mรณdulo usado para obter um lembrete durante a divisรฃo e atribuir o valor ร  mesma variรกvel

$x=10;

$x%=4;

Exemplo para completar todas as operaรงรตes acima.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

Saรญda:

Adicionar = 15

Sub = 10

Mul = 50

Div = 10

Lรณgico e Relacional Operatores:

Perl usa operadores lรณgicos para comparar nรบmeros e strings. Na maioria das vezes, operadores lรณgicos sรฃo usados โ€‹โ€‹em declaraรงรตes condicionais.

Lรณgico e Relacional Operators em Perl

Lรณgico e Relacional Operators em Perl

Operator Descriรงรฃo

==ou equaรงรฃo

Operator usado para verificar se ambas as variรกveis โ€‹โ€‹sรฃo iguais

!=Ou nรฃo

Operator usado para verificar se ambas as variรกveis โ€‹โ€‹nรฃo sรฃo iguais

> ou gt

Operator usado para verificar se

A รฉ maior que B

<ou lt

Operator usado para verificar se

A รฉ menor que B

>=ou ge

Operator usado para verificar se

A รฉ maior ou igual a B

<=ou le

Operator usado para verificar se

A รฉ menor ou igual a B

|| ou ou

Operator usado para verificar se A ou B estรก mantendo valor

&&ou e

Operator usado para verificar se A e B estรฃo mantendo valor

Tomemos um exemplo onde podemos explicar todos os cenรกrios.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

Saรญda:

Verdadeiro - igual a 5 e 5

Verdadeiro - diferente de 6 e 7

Verdadeiro โ€” 7 maior que 6

Verdadeiro โ€“ 6 menos que 7

Verdadeiro โ€“ 6 menos que 7

Verdadeiro โ€” 7 maior que 6

Vocรช pode ver exemplos de operadores lรณgicos em seรงรตes posteriores.

Variรกveis โ€‹โ€‹Especiais Perl

O que sรฃo variรกveis โ€‹โ€‹especiais Perl?

Variรกveis โ€‹โ€‹especiais em Perl sรฃo aquelas que possuem algum significado predefinido. Essas variรกveis โ€‹โ€‹sรฃo indicadas com nomes reais ou sรญmbolos de pontuaรงรฃo. Temos uma variรกvel especial para todas as variรกveis โ€‹โ€‹โ€‹โ€‹suportadas por Perl, como variรกveis โ€‹โ€‹โ€‹โ€‹escalares especiais, variรกveis โ€‹โ€‹โ€‹โ€‹especiais de array, variรกveis โ€‹โ€‹โ€‹โ€‹especiais de hash. A maioria das variรกveis โ€‹โ€‹especiais que usamos sรฃo escalares.

Quando queremos usar a variรกvel especial com seu nome, temos que carregar um mรณdulo Perl 'use English', para dizer explicitamente ao intรฉrprete Perl que usaremos variรกveis โ€‹โ€‹especiais usando seu nome.

Variรกveis โ€‹โ€‹โ€‹โ€‹especiais escalares

Variรกvel Descriรงรฃo

$_$ARG

Esta รฉ a variรกvel padrรฃo que armazena os valores atuais.

$0 ou $PROGRAM_NAME

Armazena o nome do arquivo do script Perl.

$/

O separador de registro de entrada tem um valor padrรฃo de '\n', que รฉ um caractere de nova linha

$.

Contรฉm o nรบmero da linha atual do arquivo que estรก sendo lido

$,

Separador de campo de saรญda, usado principalmente pela instruรงรฃo print(). Por padrรฃo, o valor disso รฉ definido como 0, podemos alterar o valor desta variรกvel.

$\

Separador de registros de saรญda, o valor desta variรกvel estarรก vazio; podemos atribuir qualquer valor a isso, que serรก usado pela instruรงรฃo print() durante a impressรฃo da saรญda.

$#

Esta variรกvel รฉ usada para formato de saรญda durante a impressรฃo de nรบmeros.

$%$FORMAT_PAGE_NUMBER

Manterรก o nรบmero da pรกgina atual do arquivo lido.

$=$FORMAT_LINES_PER_PAGE

Manterรก o comprimento atual da pรกgina do arquivo lido.

$-$FORMAT_LINES_LEFT

Mantรฉm o valor do nรบmero de linhas restantes para imprimir na pรกgina.

$~$FORMAT_NAME

Nome do formato: mantรฉm o formato da saรญda atualmente selecionada por padrรฃo, o nome do identificador do arquivo.

$^$FORMAT_TOP_NAME

Contรฉm o valor do formato do cabeรงalho do manipulador de arquivo; por padrรฃo, o valor serรก _TOP seguido pelo nome do identificador do arquivo.

$|$OUTPUT_AUTOFLUSH

O padrรฃo รฉ zero; isso รฉ usado para liberar o buffer de saรญda apรณs cada gravaรงรฃo() ou impressรฃo().

$$

Manterรก o nรบmero do processo em execuรงรฃo do interpretador Perl.

$?

Cรณdigo de status: Pipe e chamada de sistema. O status de retorno do comando executado.

$&$COMBINAร‡รƒO

Usado em expressรตes regulares, conterรก uma string da รบltima correspondรชncia de padrรฃo bem-sucedida.

$`$PRร‰-JOGO

Usado em expressรตes regulares, manterรก a string precedida pela รบltima correspondรชncia de padrรฃo bem-sucedida.

$'$POSTMATCH

Usado em expressรตes regulares, conterรก uma string seguida pela รบltima correspondรชncia de padrรฃo bem-sucedida.

$+$LAST_PAREN_MATCH

Contรฉm a string do รบltimo colchete que corresponde ร  รบltima pesquisa de padrรฃo.

$

$ 1, $ 2, $ 3โ€ฆ. Mantรฉm os valores do padrรฃo combinados em ordem.

$[

Primeiro รญndice: Array, uma substring.

$]

Uma versรฃo do Perl.

$โ€

O separador usado para elementos da lista, por valor padrรฃo, รฉ um espaรงo em branco.

$;

Separador de subscrito usado em matrizes multidimensionais

$!

No contexto numรฉrico, imprime o nรบmero do erro. No contexto de string, imprima o erro.

$@

Manterรก as informaรงรตes de erro de sintaxe, usadas quando eval() for usado.

$<

Contรฉm o UID real (ID do usuรกrio) do processo que executa o script.

$>

Contรฉm o UID efetivo do processo que executa o script.

$(

Contรฉm o GID (ID do grupo) real do processo que executa o script.

$)

Contรฉm o GID efetivo do processo que executa o script.

$^D$DEPURAร‡รƒO

Contรฉm o valor atual dos sinalizadores de depuraรงรฃo.

$ ^ C

Mantรฉm o valor atual do sinalizador quando a opรงรฃo de linha de comando โ€“c รฉ usada.

$^F

O descritor mรกximo de arquivo do sistema, por valor padrรฃo, รฉ definido como 2

$^I$INPLACE_EDIT

Mantรฉm o valor da opรงรฃo de linha de comando โ€“i.

$^ milhรตes

O pool de memรณria especial pode ser usado quando o script Perl morre com um erro de falta de memรณria.

$^O$OSNAME

Operainformaรงรตes do sistema sรฃo armazenadas. 'Linux' para sistemas Linux, 'mswin32' para Windows sistemas.

$^T$BASETIME

O tempo em que os scripts estรฃo sendo executados em segundos.

$^W$AVISO

O valor atual da opรงรฃo de linha de comando โ€“w. Interruptor de aviso.

$ARGV

Nome do arquivo atual, quando <> รฉ usado.

Variรกveis โ€‹โ€‹โ€‹โ€‹especiais de matriz:

Variรกvel Descriรงรฃo

@INC

Contรฉm uma lista de caminhos, onde os mรณdulos ou scripts da biblioteca Perl podem ser examinados durante a execuรงรฃo do script atual. Este @INC รฉ usado por instruรงรตes use e require para procurar nesses caminhos os mรณdulos da biblioteca.

@ARGV

Armazena os argumentos da linha de comando passados.

@_

Utilizado em sub-rotinas, ao passar os parรขmetros para as sub-rotinas.

@F

Este รฉ o array no qual as linhas de entrada sรฃo armazenadas quando a divisรฃo automรกtica โ€“a (a opรงรฃo de linha de comando รฉ usada).

Variรกveis โ€‹โ€‹especiais de hash:

Variรกvel Descriรงรฃo

%INC

O nome do arquivo serรฃo as chaves; valores serรฃo o caminho para esses arquivos. Usado por fazer, usar e exigir.

% ENV

Variรกveis โ€‹โ€‹ambientais do sistema.

%SIG

Signalรฉ manipulador.

Expressรฃo Regular Perl

O que รฉ expressรฃo regular?

A expressรฃo regular Perl รฉ forte o suficiente para combinar os padrรตes de string dentro de uma instruรงรฃo ou grupo de instruรงรตes. Expressรตes regulares sรฃo usadas principalmente na anรกlise de texto, correspondรชncia de padrรตes e muito mais com base nos requisitos. Temos certos operadores, que sรฃo especialmente usados โ€‹โ€‹โ€‹โ€‹pela ligaรงรฃo de padrรตes de expressรตes regulares =~ e! ~. Esses sรฃo operadores de teste e atribuiรงรฃo.

Expressรฃo Regular Operatoros

Expressรฃo Regular Operators em Perl

Expressรฃo Regular Operators em Perl

  • Correspondรชncia Perl - m//
  • Substituto Perl โ€“ s///
  • Perl Transliterado โ€“ tr ///

Antes de prosseguir, precisamos saber algumas coisas sobre expressรตes regulares; existem certas coisas como meta caracteres, curingas na sintaxe Perl Regex.

carbonizar Significado

\

Especial ou cotaรงรฃo

*

Combine 0 ou mais caracteres

+

Combine 1 ou mais caracteres

?

Combine 0 ou 1 caractere

|

Pode ser usado para combinar padrรตes alternativos

()

Usado para armazenar o padrรฃo correspondente

[]

Conjunto de caracteres pode ser passado. Usado especificamente para nรบmeros e alfabetos.

{}

Usado para fornecer o nรบmero de vezes que a partida pode ser realizada.

^

Inรญcio da corda

$

Fim da corda

\w

Usado para corresponder a um รบnico caractere ou palavra que pode ser alfanumรฉrico, incluindo โ€œ_โ€

\W

Corresponder a qualquer coisa que nรฃo seja alfanumรฉrica

\s

Usado para combinar espaรงos em branco

\S

Combine qualquer coisa que nรฃo seja espaรงo em branco

\d

Combine os nรบmeros. Nรฃo valores decimais e valores negativos

\D

Combine qualquer coisa que nรฃo seja nรบmeros.

\t

Corresponder espaรงo de tabulaรงรฃo

\n

Corresponder nova linha

Acima estรก o conjunto de caracteres que podem ser usados โ€‹โ€‹durante a correspondรชncia de padrรตes.

Vejamos alguns exemplos.

Considere uma situaรงรฃo em que o usuรกrio fornece alguma entrada durante a execuรงรฃo do script e queremos verificar se o usuรกrio inseriu algum nome como entrada ou nรฃo. Temos que escrever uma sintaxe de expressรฃo regular para extrair seu nome e imprimi-lo.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

Saรญda:

Padrรฃo encontrado

Aqui, escrevemos a expressรฃo regular como /.*(Guru99).*/.* corresponde a todos os caracteres em uma string. A '.' em perl regex match refere-se a qualquer caractere, incluindo espaรงo.

Vamos ver exatamente como podemos construir um Regex.

Considere um exemplo de uma sequรชncia de mรบltiplas palavras e dรญgitos e sรญmbolos especiais como este โ€œOlรก a todos, este รฉ o meu nรบmero: +91-99298373639โ€;

Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Espaรงo de palavras espaรงo de palavras espaรงo de palavras espaรงo de palavras espaรงo de palavras espaรงo de palavras caractere especial: espaรงo caractere especial+dรญgitos caractere especial โ€“dรญgitos.

Correspondรชncia Perl Operatoros

Os operadores de correspondรชncia sรฃo usados โ€‹โ€‹para combinar uma string dentro de alguma instruรงรฃo ou variรกvel.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

Saรญda:

verdadeiro

Este pequeno cรณdigo imprimirรก 'true', pois a correspondรชncia do padrรฃo Perl identifica a string em uma variรกvel. Basicamente, Perl procura pelo texto fornecido em // em toda a string, mesmo que encontre em um lugar ele retornarรก 'true'. O padrรฃo pode estar em qualquer lugar da variรกvel. Podemos tentar substituir =~ por !~ para ver a diferenรงa entre esses dois operadores.

Substituiรงรฃo Perl Operator

Este operador pode ser usado para pesquisar e substituir qualquer caractere por nulo ou algum outro caractere.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

Saรญda:

violoncelo, como vai vocรช

Nota: Na verdade, tambรฉm podemos usar qualquer string de correspondรชncia de padrรตes, como fizemos anteriormente neste operador de substituiรงรฃo. Aqui usamos 'gi', g-globalmente, i-ignore case.

Traduรงรฃo Perl Operator

Isto รฉ semelhante ร  Substituiรงรฃo, mas nรฃo usa nenhuma expressรฃo regular Perl, em vez disso podemos passar diretamente o valor ou uma palavra que queremos substituir.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

Saรญda:

Olรก vaca, vocรช รฉ

E/S de arquivo Perl

Perl foi projetado para manipular arquivos e operaรงรตes de E/S de maneira eficaz. A principal vantagem do Perl estรก na anรกlise e manipulaรงรฃo de arquivos. Existem muitas funรงรตes e operadores integrados usados โ€‹โ€‹durante a manipulaรงรฃo de arquivos em Perl.

Basicamente, as operaรงรตes de arquivo executadas com Perl sรฃo feitas usando FILEHANDLE. Temos que definir este FILEHANDLE durante a abertura de um arquivo para leitura ou gravaรงรฃo.

Neste tutorial de script Perl, vocรช aprenderรก-

Perl Abrir arquivo

Podemos abrir um arquivo usando a funรงรฃo open() disponรญvel em Perl.

open(FILEHANDLE, "filename or complete path of the file");

Agora que abrimos um arquivo, surge uma dรบvida. ร‰ para ler ou escrever?

Arquivo de leitura Perl e arquivo de gravaรงรฃo Perl

Perl possui certos modos, que precisam ser usados โ€‹โ€‹para ler, escrever ou anexar um arquivo.

Read โ€“ open(my $fh,"<filename or complete path of the file"); 
Write โ€“ open(my $fh,">filename or complete path of the file");
Append โ€“ open(my $fh,">>filename or complete path of the file");

Alguns exemplos para ler um arquivo:

Lendo arquivo em Perl

Considere que temos um arquivo perl com o nome file.txt e contรฉm poucas linhas de texto. Precisamos abrir este arquivo e imprimi-lo.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

Isso imprimirรก o conteรบdo do arquivo na tela de saรญda.

Agora, escreveremos um programa para criar e gravar dados em um arquivo perl.

Escrevendo arquivo em Perl

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Isso gravarรก a entrada fornecida durante o tempo de execuรงรฃo e criarรก um arquivo test.txt que terรก entrada.

A forma acima sempre tentarรก criar um arquivo chamado test.txt e gravarรก a entrada no arquivo; escreveremos o mesmo para anexar o arquivo.

Operaรงรฃo de acrรฉscimo de arquivo em Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Modos Descriรงรฃo

<

Leia

+<

Lรช e escreve

>

Cria, grava e trunca

+>

Ler, escrever, criar e truncar

>>

Grava, anexa e cria

+>>

Ler, escrever, anexar e criar

Agora precisamos ver como ler, escrever e anexar arquivos usando exemplos bรกsicos.

Veremos mais alguns exemplos e outras funรงรตes que ajudam a entender mais sobre arquivos.

Conta Perl

Este mรฉtodo retornarรก a posiรงรฃo atual de FILEHANDLER em bytes, se especificado, caso contrรกrio, considerarรก a รบltima linha como a posiรงรฃo.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Busca Perl

A funรงรฃo Seek รฉ semelhante ร  chamada de sistema fseek. Este mรฉtodo รฉ usado para posicionar o ponteiro do arquivo em um local especรญfico, especificando os bytes seguidos pelo inรญcio ou pelo final do ponteiro do arquivo.

seek FH, bytes, WHENCE;

WHENCE รฉ a posiรงรฃo do ponteiro do arquivo para iniciar. Zero irรก defini-lo desde o inรญcio do arquivo.

Exemplo: Deixe que input.txt contenha alguns dados como โ€œOlรก, este รฉ o meu mundoโ€.

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

Saรญda:

este รฉ o meu mundo

Desvincular Perl

Desvincular รฉ usado para excluir o arquivo.

unlink("filename or complete file path");

Manipulaรงรฃo de diretรณrios:

Tambรฉm podemos lidar com diretรณrios atravรฉs dos quais podemos lidar com vรกrios arquivos.

vamos ver como abrir um diretรณrio. Podemos usar os mรฉtodos opendir e readdir.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

Isso imprimirรก todos os arquivos disponรญveis nesse diretรณrio.

Testes de arquivo Perl e seu significado

-r

Para verificar se o arquivo/diretรณrio pode ser lido pelo usuรกrio/grupo atual

-w

Para verificar se o arquivo/diretรณrio pode ser gravado pelo usuรกrio/grupo atual

-x

Para verificar se o arquivo/diretรณrio รฉ executรกvel pelo usuรกrio/grupo atual

-o

Para verificar se o arquivo/diretรณrio pertence ao usuรกrio atual

-R

Para verificar se o arquivo/diretรณrio pode ser lido por este usuรกrio/grupo real

-W

Para verificar se o arquivo/diretรณrio pode ser gravado por este usuรกrio/grupo real

-X

Para verificar se o arquivo/diretรณrio รฉ executรกvel por este usuรกrio/grupo real

-O

Para verificar se o arquivo/diretรณrio pertence a este usuรกrio real

-e

Para verificar se o nome do arquivo/diretรณrio existe

-z

Para verificar se o arquivo existe e tem tamanho zero (sempre falso para diretรณrios)

-f

Para verificar se Entry รฉ um arquivo simples

-d

Para verificar se Entry รฉ um diretรณrio

-l

Para verificar se Entry รฉ um link simbรณlico

-S

Para verificar se Entry รฉ um soquete

-p

Para verificar se Entry รฉ um pipe nomeado (um โ€œFIFOโ€)

-b

Para verificar se Entry รฉ um arquivo especial de bloco (como um disco montรกvel)

-c

Para verificar se Entry รฉ um arquivo de caractere especial (como um dispositivo de E/S)

-u

Para verificar se o arquivo ou diretรณrio estรก setuid

-g

Para verificar se o arquivo ou diretรณrio estรก setgid

-k

Para verificar se o arquivo ou diretรณrio tem o sticky bit definido

-t

O identificador de arquivo fornecido รฉ um TTY (como pela funรงรฃo do sistema isatty(), os nomes dos arquivos nรฃo podem ser testados por este teste)

-T

Para verificar se o arquivo se parece com um arquivo de โ€œtextoโ€

-B

Para verificar se o arquivo se parece com um arquivo โ€œbinรกrioโ€

-M

Para verificar a idade de modificaรงรฃo (medida em dias) do arquivo

-A

Para verificar a idade de acesso (medida em dias) do arquivo

-C

Para verificar a idade de modificaรงรฃo do Inode (medida em dias) do arquivo

Sub-rotina Perl

O que รฉ subrotina?

Sub-rotinas sรฃo semelhantes ร s funรงรตes em outras linguagens de programaรงรฃo. Jรก usamos algumas funรงรตes integradas como print, chomp, chop, etc. Podemos escrever nossas prรณprias sub-rotinas em Perl. Estas sub-rotinas podem ser escritas em qualquer lugar do programa; รฉ preferรญvel colocar as sub-rotinas no inรญcio ou no final do cรณdigo.

Sub-rotina em PERL

Exemplo de sub-rotinas

sub subroutine_name 
{
	Statementsโ€ฆ;    # this is how typical subroutines look like.
}

Agora que sabemos escrever uma sub-rotina, como podemos acessรก-la?

Precisamos acessar ou chamar uma sub-rotina usando o nome da sub-rotina prefixado com o sรญmbolo '&'.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Passando parรขmetros Perl e argumentos Perl

Sub-rotinas ou funรงรตes perl sรฃo escritas para colocar o cรณdigo reutilizรกvel nelas. A maior parte do cรณdigo reutilizรกvel requer que parรขmetros sejam passados โ€‹โ€‹para a sub-rotina. Aqui aprenderemos como podemos passar argumentos para a sub-rotina.

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

Saรญda:

3 รฉ o valor passado

@_ รฉ uma variรกvel de array especial que armazena os argumentos passados โ€‹โ€‹para as sub-rotinas.

Perl Shift

Tambรฉm podemos usar a palavra-chave 'shift' que muda um parรขmetro por vez para uma variรกvel ou $_[0],$_[1]โ€ฆ que รฉ um elemento individual do array @_

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

Saรญda:

Olรก, foi passado

Sub-rotinas sรฃo normalmente usadas em programaรงรฃo orientada a objetos e tambรฉm em locais onde vocรช pode ter mais cรณdigo reutilizรกvel para ser colocado.

A principal funcionalidade das sub-rotinas รฉ realizar alguma tarefa e retornar o resultado do cรณdigo reutilizรกvel.

Tutorial PERL para iniciantes - guia completo

Podemos retornar um valor da sub-rotina usando a palavra-chave return.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

Saรญda:

11

$resultado conterรก o valor de $a e $b somados.

Tambรฉm podemos passar hashes e array diretamente para a sub-rotina.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

Saรญda:

1a2b

Tambรฉm podemos retornar um hash ou um array.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

Saรญda:

Dentro da sub-rotina2b1aDepois da sub-rotina call2b1a

Formato Perl

Perl possui um mecanismo com o qual podemos gerar relatรณrios. Utilizando este recurso, podemos fazer relatรณrios exatamente da maneira que desejamos durante a impressรฃo na tela Saรญda ou em um arquivo. Um formato simples pode ser escrito usando as funรงรตes printf ou sprintf disponรญveis em Perl.

printf "%05d\n", 30;

Isso incluirรก zeros ร  esquerda na frente do nรบmero 30 fazendo uma contagem total de dรญgitos atรฉ 5. O mesmo pode ser usado para sprintf.

sprintf "%05d\n", 30; # This will print the same as printf.

Usando printf e sprintf, podemos obter a maioria dos formatos Perl. No caso de relatรณrios, serรก difรญcil de implementar.

Formato Perl

Exemplo de relatรณrio:

================================================== =========================
Nome Endereรงo Idade Telefone
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

O exemplo acima รฉ um exemplo de relatรณrio que precisamos imprimir da mesma maneira em Perl. Isso pode ser conseguido usando perl printf e perl sprintf. Ele pode ser efetivamente implementado usando formato.

Um formato pode ser declarado da maneira abaixo.

format FORMATNAME=FORMATLIST.

Aqui, usaremos um mรฉtodo especรญfico de gravaรงรฃo para imprimir os dados na tela de saรญda ou no arquivo.

Sรญmbolo Descriรงรฃo

@

Usado para representar o inรญcio do titular do campo

>

Alinhamento correto do texto

<

Alinhamento ร  esquerda do texto

|

Alinhamento central

#

Numรฉrico se vรกrios # forem fornecidos. Assume como um comentรกrio se o รบnico # for fornecido

.

Ponto decimal

^

O inรญcio do suporte de campo tambรฉm pode ser usado para multilinhas e tambรฉm para quebra de linha

~

A linha deve estar vazia se a variรกvel estiver vazia

@*

Vรกrias linhas.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

Execute o cรณdigo para ver a saรญda.

Estamos usando o sรญmbolo @ para especificar o inรญcio do suporte do campo ou string, '<' cada caractere.

Estamos usando STDOUT para imprimir na saรญda padrรฃo. Podemos mudar isso para o manipulador de arquivo que estamos usando para gravar dados no arquivo.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

Podemos substituir '<' por '>' ou '|' para alterar o alinhamento do texto.STDOUT_TOP รฉ usado para projetar o cabeรงalho do formato. Tambรฉm podemos usar o mesmo com o manipulador de arquivo usando FH_TOP (FH รฉ o manipulador de arquivo). sobre.

Padrรตes de codificaรงรฃo Perl

Cada programador terรก seu prรณprio senso de escrever o cรณdigo usando determinados padrรตes; esses padrรตes devem ser familiares o suficiente para que outros programadores possam compreender e dar suporte ao cรณdigo adequadamente.

Padrรตes de codificaรงรฃo em Perl

Padrรตes de codificaรงรฃo em Perl

Escrever cรณdigo รฉ simples e fรกcil. O problema surge quando precisa ser mantido em fases posteriores. Diretrizes e padrรตes de codificaรงรฃo adequados precisam ser seguidos ao escrever o cรณdigo. Perl tambรฉm define certos padrรตes que serรฃo รบteis para os programadores escreverem cรณdigo. ร‰ aconselhรกvel carregar 'estrito' e 'mรณdulo de avisos' ao escrever o cรณdigo. Cada um desses mรณdulos tem sua importรขncia. Strict nos farรก declarar a variรกvel antes de usar e tambรฉm dirรก se alguma palavra simples estรก presente em seu cรณdigo. O mรณdulo de avisos pode alternativamente ser usado passando a opรงรฃo '-w' para o interpretador Perl em shebang. Os avisos serรฃo impressos na tela de saรญda.

#!/usr/bin/perl โ€“w

Abaixo estรฃo algumas listas de padrรตes.

  • Use o mรณdulo 'estrito' e 'avisos'.
  • Remova a variรกvel que nรฃo estรก em uso.
  • Os nomes das variรกveis โ€‹โ€‹devem ser compreensรญveis para outros usuรกrios. Ex: $nome, @fileData etc.
  • A documentaรงรฃo รฉ necessรกria ao codificar um script.
  • Nรฃo codifique nenhum valor, em vez disso tente buscรก-los dinamicamente ou peรงa ao usuรกrio para inseri-lo durante o tempo de execuรงรฃo (caminho do arquivo, nomes dos arquivos).
  • Maximize a reutilizaรงรฃo de cรณdigo. Tente colocar o cรณdigo reutilizรกvel em sub-rotinas.
  • Significa que os nomes completos devem ser fornecidos para as sub-rotinas.
  • As sub-rotinas precisam ser escritas com comentรกrios e documentaรงรฃo apropriados.
  • Sempre inicialize variรกveis.
  • Sempre verifique os cรณdigos de retorno das chamadas do sistema. A abertura de um arquivo pode ou nรฃo acontecer. Ter um cรณdigo de retorno aqui exibirรก o status de erro se o arquivo nรฃo existir.

    Ex: aberto(FH,

  • A sub-rotina sempre deve retornar um valor.
  • Abra o encaracolado na mesma linha.
  • Linha รบnica BLOCO pode ser colocado em uma รบnica linha com curvado.
  • Use rรณtulos durante os LOOPS, seria fรกcil sair do loop sempre que necessรกrio.
  • Use sublinhado enquanto frases longas de palavras sรฃo escritas como um nome de variรกvel ou sub-rotina.
  • Tente usar regex simples durante a codificaรงรฃo.

Exemplo perfeito com padrรตes de codificaรงรฃo:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

Tratamento de erros Perl

O que รฉ uma exceรงรฃo?

Uma exceรงรฃo รฉ um evento que ocorre durante a execuรงรฃo do programa e que suspenderรก ou encerrarรก seu programa.

Tratamento de erros

O tratamento de erros รฉ algo que todo programador deve tomar cuidado durante a programaรงรฃo. Perl tambรฉm fornece tรฉcnicas de tratamento de erros com as quais podemos capturar o erro e tratรก-los adequadamente.

Tratamento de erros em Perl

Tratamento de erros em Perl

Existem muitas maneiras de verificar erros no programa. Precisamos examinar os cรณdigos de retorno da funรงรฃo que estamos usando. Se formos capazes de lidar com esses cรณdigos de retorno adequadamente, a maior parte do tratamento de erros poderรก ser alcanรงada.

O que retornarรก em caso de chamadas do sistema?

No caso de chamadas de sistema, o status de retorno serรก armazenado em duas variรกveis โ€‹โ€‹especiais $? E $!

$! โ€“ Isso capturarรก o nรบmero do erro ou o nรบmero do erro associado ร  mensagem de erro.

$? โ€“ Isso manterรก a funรงรฃo return status system().

Usando operador Perl ou Lรณgico

Podemos usar lรณgica ou operador para tratamento de erros ao usar chamadas de sistema.

Ex:

open(FH,"<test.txt");

Isso abrirรก o arquivo no modo de leitura, se o arquivo existir.

E se o arquivo estiver faltando?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

Avaliaรงรฃo Perl

A funรงรฃo Eval pode lidar com erros fatais, erros de tempo de compilaรงรฃo, erros de tempo de execuรงรฃo e aqueles erros que encerram seu cรณdigo em algum momento.

A funรงรฃo Perl Eval pode ter um bloco de cรณdigo ou uma expressรฃo. Evals considera tudo o que รฉ colocado nele como uma string.

Considere uma situaรงรฃo de chamada de uma sub-rotina que nรฃo estรก definida no script. Nesta situaรงรฃo, o script termina informando โ€œsub-rotina indefinida &XYZ, este erro pode ser tratado na funรงรฃo eval.

Existem muitos usos para o bloco evals; um desses usos รฉ quando queremos carregar o mรณdulo especรญfico do sistema operacional durante o tempo de execuรงรฃo.

Ex: Dividir por zero causa erro fatal; para lidar com isso, podemos colocar o cรณdigo no bloco evals.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

Saรญda:

erro de sintaxe em C:\Users\XYZ\Text.pl linha 8, prรณximo a โ€œ)

{โ€œ

Execuรงรฃo de C:\Users\XYZ\Text.pl abortada devido a erros de compilaรงรฃo.

Exemplo: eval usando a instruรงรฃo perl die.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

Saรญda:

Capturado: Morrendo no subteste

Usando Perl Tente

Perl nรฃo suporta blocos try, catch e finalmente code como outras linguagens de programaรงรฃo. Ainda podemos usรก-los carregando um mรณdulo Perl externo.

use Try::Tiny;

Usando isso, podemos colocar seu cรณdigo no bloco try e capturar o erro no bloco warning.

No lugar de $@ usado em eval Try::Tiny usa $_.

# trata erros com um manipulador catch

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Usando finalmente.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

Saรญda:

foo em C:\Users\XYZ\Text.pl linha 4.

Podemos usar try, catch e finalmente dessa maneira.

tente {# declaraรงรฃo}

pegar {# declaraรงรฃo}

finalmente {# declaraรงรฃo};

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Saรญda:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

Saรญda:

Programaรงรฃo de soquete Perl

O que รฉ um soquete?

Tutorial PERL para iniciantes - guia completo

O soquete รฉ um meio atravรฉs do qual dois computadores podem interagir em uma rede usando endereรงos e portas de rede.

Suponha que A (Servidor) e B (Cliente) sejam dois sistemas que precisam interagir entre si usando Sockets para executar alguns programas.

Para implementar isso, precisamos criar soquetes em A (Servidor) e B (Cliente), A estarรก no estado de recebimento e B estarรก no estado de envio.

Um servidor):

Aqui, o servidor deseja receber uma conexรฃo de B (Cliente) e executar algumas tarefas e enviar o resultado de volta para B (Cliente). Quando executamos o cรณdigo, o sistema operacional em A tenta criar um soquete e vincula uma porta a esse soquete. Entรฃo ele ouvirรก o remetente que รฉ B.

B (Cliente).

Aqui, o cliente deseja enviar algum programa do seu sistema para A (Servidor) para algum processamento. Quando executamos o cรณdigo, o sistema operacional em B tenta criar um soquete para comunicaรงรฃo com A (Servidor), B deve especificar o endereรงo IP e o nรบmero da porta de A ร  qual B deseja se conectar.

Se tudo correr bem, ambos os sistemas irรฃo interagir para trocar informaรงรตes atravรฉs de uma porta. Perl tambรฉm suporta programaรงรฃo de soquete.

Perl possui uma API nativa atravรฉs da qual os soquetes podem ser implementados. Para facilitar, existem muitos mรณdulos CPAN com os quais escrevemos programas de soquete.

Operaรงรตes do servidor:

  • Criar soquete
  • Vincular soquete com endereรงo e porta
  • Ouรงa o soquete nesse endereรงo de porta
  • Aceite as conexรตes do cliente que tenta se conectar usando a porta e IP do servidor
  • Realizar operaรงรตes

Clientes Operaรงรตes:

  • Criar soquete
  • Conecte-se ao servidor usando seu endereรงo de porta
  • Realizar operaรงรตes

Servidor cliente Operaรงรตes em Perl

soquete.io

Este รฉ um mรณdulo para programaรงรฃo de soquete, baseado em programaรงรฃo orientada a objetos. Este mรณdulo nรฃo suporta o tipo de rede INET usado em redes.

IO::Soquete::INET:

Este mรณdulo suporta domรญnio INET e รฉ construรญdo sobre IO::Sockets. Todos os mรฉtodos disponรญveis em IO::Sockets sรฃo herdados no mรณdulo INET.

Cliente e Servidor usando protocolo TCP:

TCP รฉ um protocolo orientado a conexรฃo; usaremos este protocolo para programaรงรฃo de soquete.

Antes de prosseguir, vamos ver como podemos criar um objeto para o mรณdulo IO::Socket::INET e criar um soquete.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

O novo mรฉtodo no mรณdulo IO::Socket::INET aceita um hash como parรขmetro de entrada para a sub-rotina. Este hash รฉ predefinido e sรณ precisamos fornecer os valores para as chaves que queremos usar. Hรก uma lista de chaves usadas por este hash.

PeerAddr

Endereรงo de host remoto

PeerHost

Sinรดnimo de PeerAddr

PeerPort

Porta ou serviรงo remoto

Endereรงo Local

Endereรงo de ligaรงรฃo do host local

LocalHost

Sinรดnimo de LocalAddr

Porta Local

Porta de ligaรงรฃo do host local

proto

Nome do protocolo (ou nรบmero)

Formato

Tipo de soquete

Ouvir

Tamanho da fila para escuta

ReutilizarAddr

Defina SO_REUSEADDR antes da vinculaรงรฃo

armadilha para peixes

Defina SO_REUSEADDR antes da vinculaรงรฃo

ReusePort

Defina SO_REUSEPORT antes da vinculaรงรฃo

Transmissรตes

Defina SO_BROADCAST antes da vinculaรงรฃo

Timeout

Valor de tempo limite para vรกrias operaรงรตes

MultiHomed

Experimente todos os endereรงos para hosts multihomed

Bloqueio

Determine se a conexรฃo estarรก no modo de bloqueio

Servidor.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

Cliente.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

Nota:

Na programaรงรฃo de soquete, teremos que executar primeiro Server.pl e depois client.pl individualmente em diferentes prompts de comando se estivermos executando em um host local.

O que sรฃo mรณdulos e pacotes Perl

Mรณdulos e Pacotes estรฃo intimamente relacionados entre si e sรฃo independentes. Pacote: um pacote Perl tambรฉm รฉ conhecido como namespace e possui todas as variรกveis โ€‹โ€‹exclusivas usadas como hashes, arrays, escalares e sub-rotinas. Mรณdulo: Mรณdulo รฉ uma coleรงรฃo de cรณdigo reutilizรกvel, onde escrevemos sub-rotinas nele. Esses mรณdulos podem ser carregados em programas Perl para utilizar as sub-rotinas escritas nesses mรณdulos.

O que sรฃo mรณdulos Perl?

Os mรณdulos padrรฃo serรฃo instalados durante a instalaรงรฃo do Perl em qualquer sistema. CPAN: Perl abrangente Archive Network โ€“ Um repositรณrio global de mรณdulos Perl. Nossos prรณprios mรณdulos Perl personalizados que podem ser escritos por nรณs. Basicamente, um mรณdulo quando carregado em qualquer script exportarรก todas as suas variรกveis โ€‹โ€‹globais e sub-rotinas. Essas sub-rotinas podem ser chamadas diretamente como se tivessem sido declaradas no prรณprio script. Mรณdulos Perl podem ser escritos com extensรฃo .pm para o nome de arquivo Ex: Foo.pm. Um mรณdulo pode ser escrito usando 'package Foo' no inรญcio do programa.

Mรณdulo Perl bรกsico:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Sem saรญda

Para usar este mรณdulo Perl, temos que colocรก-lo no diretรณrio de trabalho atual.

Podemos carregar um mรณdulo Perl usando require ou use em qualquer lugar do cรณdigo. A principal diferenรงa entre require e use รฉ exigir mรณdulo carregado durante o tempo de execuรงรฃo e usar cargas durante o tempo de compilaรงรฃo.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Aqui, no exemplo acima, estamos acessando as sub-rotinas usando o nome de mรณdulo totalmente qualificado.

Tambรฉm podemos acessar o pacote usando 'use Arithmetic'.

Exportador:

Este mรณdulo possui uma funcionalidade padrรฃo de importaรงรฃo de mรฉtodos.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

O array @EXPORT pode ser usado para passar uma lista de variรกveis โ€‹โ€‹โ€‹โ€‹e sub-rotinas que por padrรฃo serรฃo exportadas para o chamador do Mรณdulo.

O array @EXPORT_OK pode ser usado para passar uma lista de variรกveis โ€‹โ€‹โ€‹โ€‹e sub-rotinas que serรฃo exportadas sob demanda, onde o usuรกrio deve especificar ao carregar o mรณdulo.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

Por padrรฃo, adicionar sub-rotina serรก exportado. O mรฉtodo Subtract nรฃo serรก exportado se nรฃo for especificado ao carregar o mรณdulo.

Programaรงรฃo Orientada a Objetos em Perl

Nesta seรงรฃo, aprenderemos como criar mรณdulos Perl orientados a objetos. Primeiro, vamos ver qual รฉ o objeto? Um objeto รฉ uma instรขncia com a qual podemos acessar, modificar e localizar alguns dados em qualquer mรณdulo Perl. Isso nada mais รฉ do que fazer com que seu pacote Perl existente, variรกveis โ€‹โ€‹e sub-rotinas atuem como classes, objetos e mรฉtodos em referรชncia a outras linguagens de programaรงรฃo.

Criar turma

Jรก sabemos como criar mรณdulos do tรณpico anterior. O objetivo da classe รฉ armazenar mรฉtodos e variรกveis. Um mรณdulo Perl terรก sub-rotinas que sรฃo mรฉtodos. Precisamos acessar essas variรกveis โ€‹โ€‹e objetos de sub-rotinas.

Construtor Perl

Um construtor em Perl รฉ um mรฉtodo que irรก executar e nos retornar uma referรชncia com o nome do mรณdulo marcado para a referรชncia. Isso รฉ chamado de bรชnรงรฃo para a classe. Usamos uma variรกvel especรญfica para abenรงoar uma classe Perl, que รฉ abenรงoada.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

O novo mรฉtodo usado como construtor para uma classe. Este construtor criarรก um objeto para nรณs e retornarรก ao script que estรก chamando este construtor.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Aqui, precisamos entender como o objeto foi criado. Sempre que tentamos criar um objeto para a classe, precisamos usar o nome completo da classe. Suponha que a classe Perl esteja localizada em algum lib\Math\Arithmetic.pm. E, se quisermos acessar esta classe Perl a partir do diretรณrio lib, teremos que fornecer o caminho completo para a classe enquanto chamamos o script.

use lib::Math::Arithmetic;

my $obj = lib::Math::Arithmetic->new();

ร‰ assim que acontece a criaรงรฃo de objetos em Perl.

@INC:

Como o script Perl sabe onde existe o mรณdulo da biblioteca? Perl conhece apenas o diretรณrio atual do script e o caminho da biblioteca embutida do Perl. Sempre que usarmos um mรณdulo Perl, que nรฃo estรก localizado no diretรณrio atual ou no caminho da biblioteca Perl, o script sempre falharรก. Sobre @INC, este รฉ um array que contรฉm todos os caminhos de diretรณrio onde deve procurar os mรณdulos Perl. Tente executar este comando e veja qual serรก o resultado.

perl โ€“e "print @INC"

Isso fornecerรก alguma saรญda, e esse รฉ o caminho onde os mรณdulos lib estarรฃo disponรญveis. Sempre que usamos qualquer novo mรณdulo de biblioteca, precisamos dizer ao Perl, intรฉrprete, para procurar aquele local especรญfico onde o mรณdulo Perl estรก disponรญvel.

push(@INC, "PATH TO YOUR MODULE");

Faรงa disso sua primeira linha de cรณdigo. Isso dirรก ao seu intรฉrprete para examinar esse Caminho. ou usar

lib Arithmetic; # List here is your Perl Module location

Destruidor Perl

O destruidor de um objeto รฉ chamado por padrรฃo no final e antes da saรญda do script. Isso รฉ usado para destruir seus objetos da memรณria.


Script de shell PERL V/s

Introduรงรฃo ร  programaรงรฃo PERL

  • A programaรงรฃo em Perl nรฃo causa problemas de portabilidade, o que รฉ comum ao usar shells diferentes em scripts de shell.
  • O tratamento de erros รฉ muito fรกcil em Perl
  • Vocรช pode escrever programas longos e complexos em Perl facilmente devido ร  sua vastidรฃo. Isso contrasta com o Shell que nรฃo suporta namespaces, mรณdulos, objetos, heranรงa, etc.
  • Shell tem menos bibliotecas reutilizรกveis โ€‹โ€‹disponรญveis. Nada comparado ao CPAN do Perl
  • Shell รฉ menos seguro. Sรฃo chamadas de funรงรตes externas (comandos como mv, cp etc dependem do shell que estรก sendo usado). Pelo contrรกrio, Perl faz um trabalho รบtil ao usar funรงรตes internas.

Como PERL รฉ usado em testes de automaรงรฃo

Perl รฉ amplamente utilizado em automaรงรฃo. Podem nรฃo ser as melhores linguagens de programaรงรฃo do mundo, mas sรฃo mais adequadas para certos tipos de tarefas. Vamos discutir onde e por que o Perl รฉ usado Teste de automaรงรฃo.

Teste de armazenamento

Teste de armazenamento usando Perl

O que รฉ armazenamento? Dados armazenados em Arquivos.

Suponha que temos um armazenamento relacionado Caso de teste onde temos que escrever dados em uma partiรงรฃo, lรช-los e verificar se os dados estรฃo escritos corretamente.

Isso pode ser feito manualmente, mas um testador manual pode executar o mesmo 10000 vezes? Serรก um pesadelo! Precisamos de automaรงรฃo

A melhor ferramenta para automatizar qualquer coisa relacionada ao armazenamento รฉ o Perl por causa de suas tรฉcnicas de manipulaรงรฃo de arquivos, REGEX e anรกlise de arquivos poderosa que consome menos tempo de execuรงรฃo em comparaรงรฃo com outras linguagens de programaรงรฃo.

Por que precisamos testar o armazenamento? Pense em grandes data centers onde os dados fluirรฃo continuamente de um sistema para outro, com milhares de registros armazenados por segundo. Testar a robustez desse mecanismo de armazenamento รฉ essencial.

Muitas empresas como HP, Dell, IBM e muitos fabricantes de servidores usam Perl como interface para testar a funcionalidade em domรญnios de armazenamento e rede. A NetApp รฉ uma dessas empresas que trabalha totalmente em Storage e usa Perl como linguagem de programaรงรฃo para automatizar os casos de teste.

Se vocรช estiver interessado em Perl Automation, seria aconselhรกvel aprender sobre armazenamento e rede Concepts.

Teste de servidor e rede:

Teste de servidor e rede usando Perl

Teste de servidor e rede usando Perl

PERL รฉ amplamente utilizado no tempo de atividade do servidor e no monitoramento de desempenho.

Considere um data center que possui 100 hosts (servidores). Vocรช รฉ obrigado a se conectar a cada host e executar alguns comandos remotamente. Vocรช tambรฉm deseja reiniciar o sistema e verificar quando ele voltarรก a ficar online.

Fazer essa tarefa manualmente para todos os 100 hosts serรก um pesadelo. Mas podemos automatizar isso facilmente usando PERL

Etapas de design para alcanรงar a automaรงรฃo acima usando PERL

  1. Obtenha informaรงรตes do arquivo sobre as informaรงรตes do host, como (IP, nome de usuรกrio e senha).
  2. Use Net::SSH2 para conectar-se a cada sistema e estabelecer um canal para executar os comandos.
  3. Execute o conjunto de comandos necessรกrios, ex: ls, dir, ifconfig,ps etc.
  4. Reiniciar o sistema.
  5. Aguarde 10 minutos para que o sistema seja ativado.
  6. Faรงa ping no sistema usando o mรณdulo Net::Ping e imprima o status.

Codificaremos o cenรกrio acima.

Vamos pegar um arquivo chamado Input.txt que armazenarรก as informaรงรตes completas sobre todos os hosts nos quais precisamos nos conectar e executar o comando.

Entrada.txt

Senha raiz 192.168.1.2

Senha raiz 192.168.1.3

192.168.1.4 raiz raiz123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

Teste da Web

Perl nรฃo estรก restrito apenas a testes de armazenamento e rede. Tambรฉm podemos realizar testes baseados na Web usando PERL. WWW-Mecanizar รฉ um mรณdulo usado para teste da web. Basicamente, ele nรฃo inicia nenhum navegador para testar a funcionalidade de aplicativos da web, mas usa o cรณdigo-fonte das pรกginas HTML.

Tambรฉm podemos realizar testes baseados em navegador usando Selenium IDE, RC, driver Web. Perl รฉ suportado para Selenium.

\nโ€; #this manterรก a string restante apรณs a conclusรฃo da correspondรชncia do padrรฃo.
imprimir "

Resuma esta postagem com: