Tutorial su Perl
Cos'รจ Perl?
Perl รจ un linguaggio di programmazione dinamico, interpretato e di alto livello, di uso generale. Perl รจ un termine che sta per "Practical Extraction and Reporting Language" anche se non esiste un acronimo per Perl. ร stato introdotto da Larry Wall nel 1987. Il linguaggio Perl รจ stato progettato appositamente per la modifica del testo. Ma ora รจ ampiamente utilizzato per una varietร di scopi, tra cui l'amministrazione del sistema Linux, la programmazione di rete, lo sviluppo web, ecc.

Mettiamolo in modo semplice. Sebbene i computer comprendano solo gli 0 e gli 1 (linguaggio binario/linguaggio macchina/[linguaggio di basso livello]), per noi umani รจ molto difficile programmare in un linguaggio binario. Perl รจ un linguaggio di programmazione che utilizza elementi del linguaggio naturale, parole utilizzate nella lingua inglese comune ed รจ quindi piรน facile da comprendere dagli esseri umani [linguaggio di alto livello]. Ora c'รจ un problema; i computer non possono comprendere i linguaggi di alto livello, che noi esseri umani possiamo comprendere facilmente. Per questo, abbiamo bisogno di qualcosa che possa tradurre il linguaggio di alto livello in un linguaggio di basso livello. Qui l'interprete viene in nostro aiuto. L'interprete รจ un software che converte il programma scritto in un linguaggio di alto livello in un linguaggio di basso livello affinchรฉ il computer possa comprendere ed eseguire le istruzioni scritte nel programma. Quindi, Perl รจ un linguaggio di programmazione interpretato.
Dove viene utilizzato Perl?
La potenza del linguaggio di scripting Perl puรฒ essere implementata in molti campi. L'uso piรน popolare di Perl รจ nello sviluppo Web. Perl รจ anche usato per automatizzare molte attivitร nei server Web e altri lavori di amministrazione, puรฒ generare automaticamente e-mail e ripulire i sistemi. Perl รจ ancora usato per il suo scopo originale, ovvero estrarre dati e generare report. Puรฒ produrre report sull'uso delle risorse e controllare i problemi di sicurezza in una rete. Per questo motivo, Perl รจ diventato un linguaggio popolare usato anche nello sviluppo Web, nel networking e nella bioinformatica. Oltre a tutto questo, Perl puรฒ anche essere usato per la programmazione CGI.
Perl puรฒ anche essere utilizzato per la creazione e la manipolazione di immagini. Oltre a ciรฒ, la creazione di reti tramite telnet, FTP, ecc., la creazione di interfacce utente grafiche, l'elettronica VLSI e la creazione di filtri di posta per ridurre le pratiche di spamming sono alcuni casi di utilizzo di Perl.
Perl รจ anche noto per l'implementazione di pratiche OOP (programmazione orientata agli oggetti) e supporta tutte le forme di ereditarietร (semplice, multipla e a diamante), polimorfismo e incapsulamento. Perl รจ abbastanza flessibile da supportare contemporaneamente pratiche procedurali e OOP. Perl ha anche moduli extra che consentono di scrivere o utilizzare/riutilizzare codice scritto in Python, PHP, PDL, TCL, Ottava, Java, C, C++, Basic, Ruby e Lua nello script Perl. Ciรฒ significa che puoi combinare Perl con questi extra linguaggi di programmazione piuttosto riscrivere il codice esistente.
Applicazioni del linguaggio di programmazione Perl
Perchรฉ usare Perl?
ร vero che ci sono altri linguaggi di programmazione che possono essere usati per fare tutto ciรฒ che รจ stato detto sopra, allora perchรฉ dovresti usare specificatamente Perl? Perl รจ molto facile da imparare, soprattutto se hai esperienza nella programmazione informatica. Perl รจ stato progettato per essere facile da scrivere e da comprendere per gli esseri umani piuttosto che per facilitarne l'elaborazione da parte dei computer. Utilizza espressioni regolari. Il suo stile naturale di linguaggio รจ diverso da altri linguaggi di programmazione che utilizzano grammatica e sintassi specifiche; quindi Perl รจ molto flessibile e non impone alcun modo particolare di pensare ad una soluzione o ad un problema. Perl รจ estremamente portatile. Puรฒ essere eseguito su qualsiasi sistema operativo che abbia installato l'interprete Perl, quindi รจ indipendente dalla piattaforma. Tutti i sistemi Linux OperaI sistemi di ting sono forniti con Perl installato, quindi puoi iniziare a programmare in Perl su Linux fin da subito. Questo รจ diverso dagli script Shell, in cui il codice cambia a seconda del tipo di distribuzione Linux utilizzata, rendendolo sempre meno portabile Piccoli compiti specifici in Perl diventano molto facili e veloci. In questo tutorial Perl per principianti imparerai come codificare programmi piccoli e veloci per attivitร specifiche. Prendiamo un semplice esempio del classico programma Hello World che serve per iniziare ad apprendere qualsiasi linguaggio di programmazione che abbia come radice UNIX:
Esempio: Perl ciao mondo

#!/usr/bin/perl print "Hello, world!";
Produzione:
Ciao mondo!
Le due righe di codice precedenti verranno stampate Hello, world! Ora, non era troppo semplice e veloce? Studenti con conoscenza di C, C++ saprร che sono necessarie molte piรน righe di codice per ottenere lo stesso risultato in quelle lingue.
Forse ti starai chiedendo perchรฉ Perl รจ cosรฌ famoso sul Web. ร semplice poichรฉ la maggior parte delle cose che accadono sul web sono di TESTO e Perl รจ molto bravo nell'elaborazione del testo. Se confrontiamo Perl con uno qualsiasi dei linguaggi, allora Perl sarร il linguaggio migliore, utile nella gestione dei file, nell'elaborazione del testo e nel reporting dell'output
Uno dei migliori vantaggi di Perl รจ che lo รจ libero da usare
La comunitร Perl crede fermamente che il software debba essere liberamente disponibile, liberamente modificabile e liberamente distribuibile. Diversi volontari della comunitร Perl si sforzano di rendere il linguaggio di programmazione il migliore possibile.
Vantaggi e svantaggi di Perl
| PRO: | Contro: |
|---|---|
|
|
|
|
|
let's get started
Con una conoscenza sufficiente della storia di Perl e dei concetti di base della programmazione informatica necessari per scrivere codice in Perl, รจ giunto il momento di tuffarsi e iniziare con Perl. Il prossimo capitolo ti insegnerร come configurare Perl sul tuo sistema e prepararti per il viaggio di codifica in Perl. Questo tutorial sullo scripting Perl prenderร Linux come sistema operativo che gli studenti utilizzeranno per scrivere codice in Perl.
Scarica e installa Perl โ Windows, Mac e Linux
Come ottenere Perl?
Buone notizie probabilmente ce l'hai!
Ma se non riesci a trovarlo giร sul tuo sistema, puoi comunque ottenerlo gratuitamente.
Per scoprire se hai giร installato Perl, vai alla riga di comando e digita: perl -v

Il comando visualizzerร la versione di Perl se รจ installata. In questo caso, la versione รจ v5.14.2. Ma in caso contrario... niente panico...
Unix
|
Giร installato Viene preinstallato con Perl anche se potrebbe essere necessario aggiornare alla versione piรน recente. |
Mac OS
|
Giร installato OSX viene fornito con Perl preinstallato, anche se potrebbe essere necessario aggiornarlo all'ultima versione |
Windows
|
ร necessario installare Sono disponibili due opzioni
|
Aggiornamento Perl su Linux:
Se hai bisogno di aggiornare la versione di Perl, inserisci semplicemente una singola riga di comando
sudo apt-get install perl
e rilassati. Al resto ci penseremo noi. Assicurati solo di avere una connessione Internet attiva.


Installa perl per Windows:
Per prima cosa scarica Active Perl da questo link. Segui questi passaggi per installare ActivePerl Windows sistema. Vedi gli screenshot qui sotto per lo stesso.
Passo 1: Una volta scaricato il programma di installazione e avviata l'installazione verrร visualizzata la finestra sottostante, fare clic su Avanti per procedere.

Passo 2: Accettare il contratto di licenza per procedere con l'installazione.

Passo 3: Di seguito sono riportati i diversi pacchetti che verranno installati. Per impostazione predefinita, saranno selezionati tutti. L'unica cosa diversa รจ PPM (Perl Package Manager). Questa รจ l'utilitร fornita da Active Perl per installare moduli o librerie Perl esterni nel tuo sistema. Fare clic su Avanti per procedere.

Passo 4: Questi sono diversi tipi di estensioni Perl che possono essere utilizzate per Perl. Utilizzeremo principalmente .Pl, .Plx e .Pm per Perl. I moduli Perl utilizzano fondamentalmente .Pm come estensione di file per fare riferimento a un file di libreria. Seleziona tutte le opzioni e fai clic sul pulsante Avanti.

Passo 5: Fare clic sul pulsante Installa per procedere con l'installazione.

Passo 6: Una volta installato, esegui il comando 'Perl โv' per verificare se Perl รจ stato installato correttamente nel tuo sistema.

Ci sono molte cose che devono essere discusse per impostare l'ambiente Perl sia in Linux che in Linux Windows, poichรฉ non saranno inclusi molti file di libreria in questa installazione. ร necessario installarli manualmente. Puoi installarli manualmente utilizzando CPAN (Comprehensive Perl Archive Network) o PPM che funziona solo per le finestre perl. Ma questi file non sono obbligatori per iniziare a programmare in Perl.
Oltre a questa configurazione di Windows, potresti usare Windows Nuova funzionalitร del sottosistema Linux su Windows e utilizzo per l'esecuzione del codice Perl
Primo programma Perl
Hello world!
Esempio Perl: Ciao mondo
#!/usr/bin/perl -w #this is just a commentโฆ print "Hello World";
Non preoccuparti se non capisci questo testo. Presto tutto sarร chiaro. Vieni a dargli un'occhiata per riga:
#!/usr/bin/perl
Questo dice a Operating System per eseguire questo file con il programma situato in /usr/bin/perl Alcuni IDE non necessitano di questa riga. Se รจ essenziale, devi scrivere qui il percorso verso il tuo interprete. Ricordare! Questa riga speciale deve trovarsi all'inizio del programma e deve iniziare da #! utilizzare gli avvertimenti; Questo รจ un altro comando speciale che dice all'interprete di visualizzare eventuali avvisi, ad esempio -w che attiva gli avvisi a livello globale.
print "Hello World";
L'istruzione di stampa scrive il testo sullo schermo. Il punto e virgola alla fine della riga indica all'interprete perl che l'istruzione รจ terminata. Devi mettere un punto e virgola alla fine di ogni istruzione nel codice Perl. Notare le virgolette(โ). ร necessario per le istruzioni di stampa. Salva lo script sopra come firstprog.pl
On Windows
Se hai installato Strawberry, puoi semplicemente fare clic su Esegui. Puoi anche eseguire l'interfaccia della riga di comando e scrivere sulla console:
C:\> perl path\firstprog.pl
oppure, se perl.exe non รจ nel tuo percorso:
C:\> c:\perl\bin\perl.exe firstprog.pl
Su Linux/Unix
Non ti resta che aprire il Terminale e scrivere:
perl firstprog.pl
Se non puoi eseguire il programma, assicurati di avere l'idoneitร per eseguirlo. Digitare nel Terminale:
chmod +x firstprog.pl
Il tuo programma รจ ora eseguibile e pronto per essere eseguito. Per eseguire, scrivere:
./firstprog
Installa i moduli cpan minus
I moduli sono insiemi di codici utilizzati per eseguire attivitร che eseguono operazioni comuni in diversi programmi. Se usi i moduli perl, non devi riscrivere i codici per eseguire la stessa operazione. Perl puรฒ fare uso di tali librerie di codici esterne. Una delle migliori librerie รจ la CPAN. Sta per Comprehensive Perl Archive Network e contiene una vasta quantitร di moduli Perl che puoi utilizzare. ร una comunitร o una rete di un gran numero di sviluppatori che contribuiscono con tali moduli. Installando il supporto per i moduli CPAN nel tuo modulo perl, puoi utilizzare i moduli CPAN e semplificare il tuo lavoro. La maggior parte dei moduli Perl รจ scritta in Perl, alcuni usano XS (sono scritti in C) quindi richiedono un compilatore C (รจ facile ottenere questa configurazione, niente panico. I moduli possono avere dipendenze da altri moduli (quasi sempre su CPAN) e non possono essere installati senza di essi (o senza una versione specifica di essi). Vale la pena leggere attentamente la documentazione per le opzioni di seguito. Molti moduli su CPAN ora richiedono una versione recente di Perl (versione 5.8 o superiore). Installa cpanminus uno script per ottenere, decomprimere, compilare e installare moduli da CPAN per semplificare l'installazione di altri moduli (ci ringrazierai piรน tardi). Per installare App-cpanminus moduli perl, nella riga di comando digitare:
cpan App::cpanminus
cpan App::cpanminus Assicurati di avere una connessione internet mentre i moduli perl vengono scaricati e installati.

Ora installa qualsiasi modulo:
cpan โi <Module_Name>.
Vediamo un esempio di installazione di un modulo File::Data(ร un'interfaccia per accedere ai dati dei file).

Variabile Perl
Ora parleremo di variabili. Puoi immaginare una variabile come una sorta di contenitore che contiene uno o piรน valori. Una volta definito, il nome della variabile rimane lo stesso, ma il valore o i valori cambiano continuamente.
Esistono 3 tipi di variabili:
Tipi di variabili in Perl
Quelli piรน semplici sono gli scalari, e questo รจ il nostro argomento di oggi
Variabile scalare
Questo tipo di variabile contiene un singolo valore.
Il suo nome inizia con il simbolo del dollaro e un identificatore Perl (รจ il nome della nostra variabile).
Variabile scalare in Perl
Convenzione sulla denominazione
Se hai familiaritร con altri linguaggi di programmazione, allora saprai che esistono alcune regole sulla denominazione delle variabili. Allo stesso modo, Perl ha tre regole per nominare gli scalari.
- Tutti i nomi scalari inizieranno con $. ร facile ricordarsi di anteporre a ogni nome $. Consideratelo come un $scalare.
- Come PHP. dopo il primo carattere $, che รจ speciale in Perl, sono consentiti caratteri alfanumerici, ad esempio dalla a alla z, dalla A alla Z e da 0 a 9. ร consentito anche il carattere di sottolineatura. Utilizzare il carattere di sottolineatura per dividere i nomi delle variabili in due parole. 'Ma il Primo carattere non puรฒ essere un numero'
- Anche se i numeri possono far parte del nome, non possono venire subito dopo $. Ciรฒ implica che il primo carattere dopo $ sarร un alfabeto o il trattino basso. Quelli provenienti da C/C++ lo sfondo dovrebbe essere immediatamente in grado di riconoscere la somiglianza. Esempi
Esempio Perl:
$var; $Var32; $vaRRR43; $name_underscore_23;
Questi, tuttavia, non sono nomi di variabili scalari legali.
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
La regola generale dice che quando Perl ha solo uno di qualcosa, quello รจ uno scalare. Gli scalari possono essere letti dai dispositivi e possiamo usarli nei nostri programmi.
Due tipi di tipi di dati scalari
- Numbers
- String
Numbers:
In questo tipo di dati scalari potremmo specificare:
- numeri interi, sono semplicemente numeri interi, come 2, 0, 534
- numeri in virgola mobile, sono numeri reali, come 3.14, 6.74, 0.333

Nota: in generale, l'interprete Perl vede gli interi come numeri in virgola mobile. Ad esempio, se scrivi 2 nei tuoi programmi, Perl lo vedrร come 2.0000
Letterali interi:
ร costituito da una o piรน cifre, facoltativamente precedute da un segno piรน o meno e contenenti trattini bassi.
Esempi Perl:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Come puoi vedere, non รจ niente di speciale. Ma credimi, questo รจ il tipo piรน comune di scalari. Sono ovunque.
Letterali in virgola mobile:
ร composto da cifre, facoltativamente meno, punto decimale ed esponente.
Esempi 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

Rappresentazione ottale, esadecimale e binaria:
E' alternativo al sistema decimale. Permettimi di mostrarti la rappresentazione ottale, esadecimale e binaria. Una breve tabella presenta tutte le informazioni importanti su questi strani stili:
| sul Mercato | Tavola XY | Proceduto da |
|---|---|---|
| Octal | 8 | 0 (zero) |
| Esadecimale | 16 | 0x |
| Binario | 2 | 0b |
Esempi Perl:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Tutti questi valori per Perl significano lo stesso. Perl non memorizza i valori nello stesso formato. Convertirร internamente questi valori esadecimali, binari, ottali in decimali.
L'assegnazione รจ l'operazione piรน comune su uno scalare ed รจ molto semplice. Perl usa per quel segno uguale. Prende un valore dell'espressione dal lato destro e inserisce questo valore nella nostra variabile.
Diamo un'occhiata agli esempi:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Inoltre puoi inserire nella variabile non solo un numero, ma anche un'espressione.
$z = 6 + 12 # give $z value of 18
String
Stringhe: รจ anche un tipo scalare molto semplice.
La lunghezza massima di una stringa in Perl dipende dalla quantitร di memoria di cui dispone il computer. Non esiste alcun limite alla dimensione della stringa, qualsiasi quantitร di caratteri, simboli o parole puรฒ costituire le tue stringhe. La stringa piรน corta non ha caratteri. Il piรน lungo puรฒ riempire tutta la memoria del sistema. I programmi Perl possono essere scritti interamente in un set di caratteri ASCII a 7 bit. Perl ti consente anche di aggiungere qualsiasi set di caratteri a 8 o 16 bit, ovvero. caratteri non ASCII all'interno di stringhe letterali. Perl ha anche aggiunto il supporto per Unicode UTF-8.

Come i numeri, esistono due diversi tipi di stringhe:
- Stringhe letterali con virgolette singole
- Double virgolette stringhe letterali
Stringhe letterali con virgolette singole
Le virgolette singole vengono utilizzate per racchiudere i dati che si desidera prendere alla lettera. Un breve esempio e tutto dovrebbe essere chiaro:
Esempi Perl:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
Produzione:
รจ $num
Qui a causa delle virgolette singole, il valore di $num non รจ stato preso e i caratteri letterali '$','n', 'u' e 'm' vengono aggiunti al valore di $txt
Doublestringhe letterali tra virgolette
Double le virgolette vengono utilizzate per racchiudere i dati che devono essere interpolati prima dell'elaborazione. Ciรฒ significa che i caratteri di escape e le variabili non vengono semplicemente inseriti letteralmente in operazioni successive, ma vengono valutati sul posto. I caratteri di escape possono essere utilizzati per inserire nuove righe, tabulazioni, ecc.
Esempi Perl:
$num = 7; $txt = "it is $num"; print $txt;
Produzione:
รจ 7
Qui, a causa delle virgolette doppie, il valore di $num viene aggiunto al valore di $txt
Double-virgolette interpolano variabili scalari e array, ma non hash. D'altro canto, puoi usare le virgolette doppie per interpolare slice di array e hash.
Misterioso\n
Considera il seguente programma
Esempi Perl:
print "hello \n";
Produzione:
Ciao
Perl non visualizza solo "ciao\n", ma solo "ciao". Perchรฉ? Perchรฉ '\n' รจ un segno speciale e significa che vuoi passare a una nuova riga mentre visualizzi il testo nel tuo programma. print โciao\n nuova rigaโ; Prossima domanda: ci sono altri segni speciali? Sรฌ! Ma non preoccuparti, solo alcuni. Controlla la tabella qui sotto
| Costruire | Descrizione |
|---|---|
| \n | nuova linea |
| \r | ritorno |
| \t | linguetta |
| \f | avanzamento modulo |
| \b | backspace |
| \a | campana |
| \e | fuga |
| \dieci | qualsiasi valore ASCII ottale (qui, 007 = campana) |
| \x7f | qualsiasi valore esadecimale (qui, 7f = cancella) |
| \\ | backslash |
| \ " | doppia virgoletta |
| \l | lettera successiva minuscola |
| \L | minuscole tutte le lettere seguenti fino a \E |
| \u | lettera successiva maiuscola |
| \U | maiuscole tutte le lettere seguenti fino a \E |
| \E | Terminare \L, \U |
Lo so, non ce ne sono 'solo pochi'โฆ Ma credetemi, dovete saperlo proprio
Variabile di stringhe
ร la stessa operazione che vediamo nell'assegnazione dei numeri. Perl ottiene la nostra stringa dal lato destro del segno uguale e inserisce questa stringa in una variabile.
Esempi 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;
Produzione:
procedura dettagliata315
Come puoi vedere, puoi inserire numeri e stringhe nelle stesse variabili. Non esiste una classe di variabili.
Concatenazione di stringhe (punto):
Lโoperatore di concatenazione โ.โ unisce due o piรน corde. Ricordare! Se la stringa contiene virgolette, ritorni a capo e barre rovesciate, tutti questi caratteri speciali devono essere preceduti da una barra rovesciata.
Variabile Perl ' ' Esempi:
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
Produzione:
Tom รจ il gatto preferito della mamma
Le corde
โ$aโ, โ$bโ, sono concatenati e memorizzati in โ$cโ utilizzando il simbolo โ.โ operatore.
Alla fineโฆ
Conversione tra Numbers e stringhe:
Come sapete, Perl converte automaticamente i numeri in stringhe quando necessario. Come fa Perl a sapere di cosa abbiamo bisogno in questo momento? ร semplice: tutto dipende dall'operatore (parleremo degli operatori piรน avanti, ora, accetta solo che ci sono molti operatori, diversi per numeri e stringhe). Se un operatore si aspetta un numero, Perl userร il valore come numero. Se un operatore si aspetta una stringa, Perl userร il valore come stringa. In altre parole, non devi preoccuparti di questo tipo di conversione. Un breve esempio e tutto dovrebbe essere chiaro:
Esempi Perl:
$string = "43"; $number = 28; $result = $string + $number; print $result;
Produzione:
71
il valore di $string viene convertito in un numero intero e aggiunto al valore di $number.
Il risultato dell'addizione, 71, viene assegnato a $risultato.
Ambito di una variabile โ Modificatori di accesso
Possiamo dichiarare uno scalare ovunque nel programma. Ma devi specificare un modificatore di accesso
Esistono 3 tipi di modificatori
- my
- locale
- nostro
My: Usandolo puoi dichiarare qualsiasi variabile specifica all'interno del blocco. cioรจ all'interno delle parentesi graffe.
#!/usr/bin/perl
my $var=5;
if(1)
{
my $var_2 =$var;
}
print $var_2;
Nessuna uscita
L'output del programma non sarร nulla!

Nell'esempio sopra, vedrai che ci sono due variabili dichiarate, una รจ all'interno del blocco If ($var_2) e l'altra รจ all'esterno del blocco If ($var). La variabile dichiarata all'esterno del blocco sarร accessibile a if block ma la variabile dichiarata all'interno di if block non sarร accessibile al programma esterno.
Locale: Usandolo possiamo effettivamente mascherare gli stessi valori della variabile su valori diversi senza effettivamente modificare il valore originale della variabile, supponiamo di avere una variabile $a per la quale il valore รจ assegnato 5, puoi effettivamente modificare il valore di quella variabile da ri-dichiarare la stessa variabile utilizzando la parola chiave local senza alterare il valore originale della variabile che รจ 5. Vediamo come funziona con un esempio.
#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";
L'output del programma sopra sarร in questo modo.
locale, $var = 3
globale, $var = 5
In questo modo possiamo modificare il valore della variabile senza alterare il valore originale.
Our: una volta dichiarata una variabile con il modificatore di accesso "our", puรฒ essere utilizzata nell'intero pacchetto. Supponiamo di avere un modulo Perl o un pacchetto test.pm che ha una variabile dichiarata con scope our. ร possibile accedere a questa variabile in qualsiasi script che utilizzerร quel pacchetto.
Se siete seriamente intenzionati a programmare in Perl, dovreste iniziare il vostro programma con
#! / usr / local / bin / perl
usare rigorosamente;
Questo ti aiuterร a scrivere codice migliore e piรน pulito. 'use strict' attiva il pragma strict che ti farร dichiarare le tue variabili con la mia parola chiave.
Questa รจ una buona pratica di programmazione
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Risultato: errore
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
Produzione:
10
Array Perl
Cos'รจ l'array Perl?
Un Array รจ un tipo speciale di variabile che memorizza i dati sotto forma di elenco; รจ possibile accedere a ciascun elemento utilizzando il numero di indice che sarร univoco per ciascun elemento. Puoi memorizzare numeri, stringhe, valori mobili, ecc. nel tuo array. Sembra fantastico, quindi come creiamo un array in Perl? In Perl, puoi definire un array usando il carattere '@' seguito dal nome che vuoi dare. Consideriamo la definizione di un array in Perl.
il mio @array;
Questo รจ il modo in cui definiamo un array in Perl; potresti pensare a come dobbiamo archiviare i dati al suo interno. Esistono diversi modi per archiviare i dati in un array. Dipende da come lo utilizzerai.
my @array=(a,b,c,d); print @array;
Produzione:
abcd
Questo รจ un array con 4 elementi al suo interno.
L'indice dell'array inizia da 0 e termina con la dimensione massima dichiarata, in questo caso la dimensione massima dell'indice รจ 3.
Esempio di array Perl
Puoi anche dichiarare un array nel modo sopra; l'unica differenza รจ che memorizza i dati in un array considerando uno spazio bianco come delimitatore. Qui, qw() significa citazione. Il significato di questa funzione รจ generare un elenco di parole. Puoi utilizzare qw in diversi modi per dichiarare un 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;
Produzione:
abcdpqrsvxyz
Supponiamo di voler assegnare un valore a 5th elemento di un array, come lo faremo.
$array[4] ='e';
Matrice sequenziale
Gli array sequenziali sono quelli in cui si memorizzano i dati in sequenza. Supponiamo di voler memorizzare da 1 a 10 numeri o alfabeti dalla az in un array. Invece di digitare tutte le lettere, puoi provare qualcosa come di seguito:
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
Produzione:
12345678910
Dimensioni dell'array Perl
Abbiamo un array che รจ giร disponibile e non sai quale sia la dimensione di quell'array, quindi qual รจ il modo possibile per trovarlo.
@array= qw/a b c d e/; print $size=scalar (@array);
Possiamo ottenere la dimensione di un array senza utilizzare le funzioni? Sรฌ possiamo.
@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
Produzione:
5
5
Matrice dinamica
Viene chiamato il metodo sopra descritto per dichiarare un array array statici, dove conosci la dimensione di un array.
Cos'รจ l'array dinamico?
Gli array dinamici sono quelli che dichiari senza specificare alcun valore su di essi. Quindi, quando memorizziamo esattamente i valori in quell'array? Semplice, li memorizziamo durante il runtime. Ecco un semplice programma per questo.
Utilizzeremo alcune funzioni Perl integrate per eseguire questa attivitร .
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.
}
Produzione:
Questo รจ anche
una specie di dinamica
mic
rr
y
La funzione split divide il contenuto della stringa in un array in base al delimitatore fornito. Questa funzione eliminerร anche il delimitatore dalla stringa, in questo caso รจ 'a';
Push, Pop, Shift, Unshift per gli array Perl:
Queste funzioni possono essere utilizzate in Perl per aggiungere/eliminare elementi di un array.
- Perl Push: aggiunge un elemento dell'array alla fine di un array esistente.
- Perl Pop: rimuove l'ultimo elemento da un array.
- Perl Shift: rimuove il primo elemento da un array.
- Perl Unshift: aggiunge un elemento all'inizio di un array.

Vediamo un esempio in cui possiamo utilizzare le funzioni seguenti.
@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";
Produzione:
1ยฐ: lun mar mer
2ยฐ quando si preme: lun mar mer gio
3ยฐ quando non turno: ven lun mar mer gio
4ยฐ quando pop: ven lun mar mer
5ยฐ quando turno: lun mar mer
Hash Perl
Perchรฉ abbiamo bisogno dell'hash?
Abbiamo giร appreso degli scalari e degli array nelle sezioni precedenti.
Cosa fanno esattamente gli scalari? Memorizza solo numeri interi e stringhe.
Cosa fanno esattamente gli array? ร una raccolta di scalari, in cui accedi a ciascun elemento di un array utilizzando gli indici. Ma รจ una buona idea utilizzare un array quando si hanno centinaia e migliaia di record? Dimenticheremo quale indice ha quale valore. Per superare questa situazione abbiamo qualcosa come Perl Hash.
Cosa sono gli hash?
Un hash puรฒ anche contenere tanti scalari quanti ne puรฒ contenere l'array. L'unica differenza รจ che non abbiamo alcun indice, piuttosto abbiamo chiavi e valori. ร possibile dichiarare un hash iniziando con % seguito dal nome dell'hash. Vediamo un esempio di come possiamo definire un hash Perl e come possiamo differenziarlo dall'array
Considera un esempio di tre persone e le loro etร sono rappresentate in una matrice.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks.
print @array;
Produzione:
Sainath33Krishna24Shruthi25
In questo modo รจ difficile conoscere l'etร individuale poichรฉ dobbiamo ricordare sia la posizione dell'indice del nome che l'etร di tutte le persone. Puรฒ essere semplice quando hai 3 nomi, ma quando ne hai 1000 o piรน? Tu sai la risposta.

Questo possiamo superarlo usando un hash.
Esempio di 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.
Produzione:
Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25
Ora abbiamo dichiarato un hash, fantastico!! Ma come possiamo accedervi o stamparlo? ร necessario accedere a ciascun elemento nell'hash con la chiave associata alla quale verrร assegnato un valore. Quindi, esiste una mappatura uno tra ciascuna chiave e valore nell'hash.
Per stampare l'etร di qualsiasi persona, devi solo ricordare il nome di quella persona.
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
Potresti esserti chiesto perchรฉ ho usato $hash{KeyName}, ricorda che un hash รจ ancora una volta una raccolta di scalari. Quindi, possiamo usare $ che rappresenta scalare per accedere a ciascun elemento hash.

Nota: ciascuna chiave nell'hash deve essere univoca, altrimenti sovrascriverร il valore assegnato in precedenza.
Come possiamo assegnare un hash a un altro hash? Semplice, come facciamo noi per
Possiamo anche stampare l'intero hash.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
Produzione:
Tom23
Aggiungi hash Perl
Come puoi vedere, abbiamo giร un hash %newHash e ora dobbiamo aggiungervi altre voci.
$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;
Produzione:
Jim25Giovanni26Harry27
Tasto Perl Elimina
Potresti voler eliminare una voce da un hash. Ecco come possiamo farlo.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Elimina รจ una funzione incorporata di Perl. Qui vedremo un esempio di assegnazione di un hash a un array.
@array=%newHash; print "@array";
Nota: ogni volta che stampi un hash o quando memorizzi l'hash in un array. L'ordine puรฒ sempre differire. Non รจ sempre lo stesso.
Possiamo assegnare solo chiavi o valori di un hash a un array.
@arraykeys= keys(%newHash); @arrayvalues=values(%newHash); print "@arraykeys\n"; print "@arrayvalues\n"; # \n to print new line.
Per rimuovere tutte le voci nell'hash, possiamo assegnare direttamente l'hash a null.
%newHash=();# Questo ridefinirร l'hash senza voci.
Istruzioni condizionali Perl
Possiamo usare istruzioni condizionali in Perl. Allora, cosa sono le dichiarazioni condizionali? Le istruzioni condizionali sono quelle in cui controlli effettivamente che alcune circostanze siano soddisfatte nel tuo codice.
Pensa ad un esempio, stai comprando della frutta e non ti piace che il prezzo sia superiore a 100 dollari. Quindi la regola qui รจ 100 dollari.
Perl supporta due tipi di istruzioni condizionali; sono se e a meno che.
Perl Se
Se il blocco di codice verrร eseguito, quando la condizione รจ vera.

my $a=5;
if($a==5)
{
print "The value is $a";
}
Produzione:
5
Perl se altro
Sembra buono. Pensiamo a una situazione in cui $a non รจ 5.
my $a=10;
if($a==5)
{
print "The values is $a ---PASS";
}
else
{
print "The value is $a ---FAIL";
}
Produzione:
Il valore รจ 10 โFAIL
In questo modo possiamo controllare solo una condizione alla volta. ร una limitazione? No, puoi anche controllare varie condizioni usando if... elsif... else.
Perl Altro 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";
}
Produzione:
Blocco elsif eseguito: il valore รจ 5
Nel caso precedente, il blocco elsif verrร eseguito poichรฉ $a รจ uguale a 5.
Potrebbero verificarsi situazioni in cui sia i blocchi di codice if che quelli elif falliranno. In questo scenario verrร eseguito il blocco di codice else. Puoi effettivamente eliminare il controllo del codice else se non desideri includerlo.
Perl annidato se
In questo caso, รจ possibile utilizzare if code block in un altro if code block.
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";
}
Produzione:
All'interno del primo blocco else โ Il valore รจ 1
Esegui lo stesso codice modificando il valore di $a; il resto puoi scoprirlo.
Perl a meno che
Hai giร un'idea di cosa fa se (se la condizione รจ vera eseguirร il blocco di codice). A meno che sia opposto a se, a meno che il blocco di codice verrร eseguito se la condizione รจ 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";
}
Produzione:
All'interno del primo blocco else โ Il valore รจ 1
Indovina quale sarร il risultato. Hai ragione!!!!!. L'output sarร l'istruzione print del blocco else. A causa della condizione in less code block รจ vera, ricorda a meno che il blocco verrร eseguito solo se la condizione รจ falsa. Cambia il valore di $ae esegui il codice vedrai la differenza.
Perl Utilizzando se
$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}
Produzione:
All'interno del blocco altrimenti
Usando a meno che
$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}
Produzione:
Dentro a meno che non sia bloccato
Perl Loops โ Strutture di controllo
Perl supporta strutture di controllo simili ad altri linguaggi di programmazione. Perl supporta quattro tipi di strutture di controllo for, foreach, while e Until. Usiamo queste istruzioni per eseguire ripetutamente del codice.
Ciclo For Perl
Poichรฉ il blocco di codice verrร eseguito finchรฉ la condizione non sarร soddisfatta. Prendiamo un esempio di come eseguire il looping di un array in Perl.
my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
print "The array index $count value is $array[$count]";
print "\n";
}
Produzione:
Il valore dell'indice dell'array 0 รจ 1
Il valore dell'indice dell'array 1 รจ 2
Il valore dell'indice dell'array 2 รจ 3
Il valore dell'indice dell'array 3 รจ 4
Il valore dell'indice dell'array 4 รจ 5
Il valore dell'indice dell'array 5 รจ 6
Il valore dell'indice dell'array 6 รจ 7
Il valore dell'indice dell'array 7 รจ 8
Il valore dell'indice dell'array 8 รจ 9
Il valore dell'indice dell'array 9 รจ 10
Qui, nell'espressione for (), sono incluse molte istruzioni. C'รจ un significato per ognuno di essi.
for (inizializzazione; condizione; incremento)
Ecco un altro modo di utilizzare for.
for(1..10)
{
print "$_ n";
print "\n";
}
Produzione:
1n
2n
3n
4n
5n
6n
7n
8n
9n
10n
Perl Foreach
L'istruzione for each puรฒ essere utilizzata allo stesso modo di for; la differenza principale รจ che non abbiamo alcun controllo delle condizioni e alcun incremento in questo.
Prendiamo lo stesso esempio con foreach perl.
my @array=(1..10);
foreach my $value (@array)
{
print " The value is $value\n";
}
Produzione:
Il valore รจ 1
Il valore รจ 2
Il valore รจ 3
Il valore รจ 4
Il valore รจ 5
Il valore รจ 6
Il valore รจ 7
Il valore รจ 8
Il valore รจ 9
Il valore รจ 10
Foreach prende ogni elemento di un array e assegna quel valore a $var per ogni iterazione. Possiamo anche usare $_ per lo stesso.
my @array=(1..10);
foreach(@array)
{
print " The value is $_ \n"; # This is same as the above code.
}
Produzione:
Il valore รจ 1
Il valore รจ 2
Il valore รจ 3
Il valore รจ 4
Il valore รจ 5
Il valore รจ 6
Il valore รจ 7
Il valore รจ 8
Il valore รจ 9
Il valore รจ 10
Questo sembra buono per accedere agli array. Che ne dici di Hash, come possiamo ottenere chiavi e valori hash usando foreach?
Possiamo usare foreach per accedere alle chiavi e ai valori dell'hash eseguendo un loop.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}
Produzione:
Mickey
Tom
Jerry
Forse ti starai chiedendo perchรฉ abbiamo usato le chiavi in โโforeach(). Keys รจ una funzione integrata di Perl con cui possiamo accedere rapidamente alle chiavi dell'hash. Che ne dici dei valori? Possiamo usare la funzione valori per accedere ai valori dell'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";
}
Produzione:
il valore รจ 24
il valore รจ 23
il valore รจ 25
Perl Mentre
Il ciclo While di Perl รจ una struttura di controllo, in cui il blocco di codice verrร eseguito finchรฉ la condizione non diventa vera.
Il blocco di codice uscirร solo se la condizione รจ falsa.
Prendiamo un esempio per il ciclo While di Perl.

Ecco un problema che richiederร l'input dell'utente e non verrร risolto fino al numero fornito come "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"
Produzione:
Indovina un numero compreso tra 1 e 10
9
Indovina un numero compreso tra 1 e 10
5
Indovina un numero compreso tra 1 e 10
7
Hai indovinato il numero fortunato 7
Nell'esempio precedente, la condizione while non sarร vera se inseriamo un input diverso da "7".
Se vedi come funziona while qui, il blocco di codice verrร eseguito solo se la condizione tra while รจ vera.
Perl fai-nel frattempo
Il ciclo while verrร eseguito almeno una volta anche se la condizione nella sezione while รจ falsa.
Prendiamo lo stesso esempio utilizzando do while.
$guru99 = 10;
do {
print "$guru99 \n";
$guru99--;
}
while ($guru99 >= 1);
print "Now value is less than 1";
Produzione:
10
9
8
7
6
5
4
3
2
1
Ora il valore รจ inferiore a 1
Perl fino a quando
Il blocco di codice Until รจ simile a less in un'istruzione condizionale. In questo caso, il blocco di codice verrร eseguito solo se la condizione nel blocco Until รจ falsa.
Prendiamo lo stesso esempio che abbiamo usato in caso di tempo.
Ecco un problema che richiederร l'input dell'utente e non verrร risolto finchรฉ non verrร fornito un nome diverso da "sai".
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
until($name ne 'sai')
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}
Produzione:
Inserisci un nome qualsiasi, sai
Perl do-fino a:
Do Until puรฒ essere utilizzato solo quando รจ necessario che una condizione sia falsa e dovrebbe essere eseguito almeno una volta.
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
do
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}until($name ne 'sai');
Produzione:
Inserisci un nome qualsiasi Howard
Inserisci un nome qualsiasi, Sheldon
Inserisci un nome qualsiasi, sai
Esegui while, do- while, Until e do-until codici di esempio per vedere la differenza.
Perl Operator
Cosa รจ Operatore?
OperaI motori nel linguaggio informatico indicano un'azione che puรฒ essere eseguita su un insieme di variabili o valori che il computer puรฒ comprendere. Perl ha incorporato la maggior parte dei Operaoperatori del linguaggio C. Perl ha molti operatori rispetto ad altri linguaggi di programmazione. OperaGli operatori sono classificati come aritmetici, logici, relazionali e di assegnazione.
Aritmetica Operatori:
Gli operatori aritmetici sono quelli che possono essere utilizzati per eseguire alcune operazioni matematiche di base. Questi operatori aritmetici sono operatori binari in cui sono necessari due argomenti per eseguire un'operazione di base. Possiamo anche utilizzare gli operatori unari per altre operazioni di base; puoi vedere la differenza negli esempi seguenti.
| Operator | Descrizione | Esempio |
|---|---|---|
|
+ |
Operazione di addizione utilizzata per aggiungere due valori o variabili detenere valori |
$x=5+6; # O $y=6; $z=$x+$y; |
|
- |
Operatore di sottrazione utilizzato per sottrarre due valori o variabili che contengono valori |
$x=6-5; # O $y=6; $z=$x-$y; |
|
* |
Operatore di moltiplicazione utilizzato per moltiplicare due valori o variabili che contengono valori |
$x=6*5; # O $y=6; $z=$x*$y; |
|
/ |
Operatore di divisione utilizzato per dividere due valori o variabili che contengono valori |
$x=36/6; # O $y=6; $z=$x/$y; |
|
** |
L'operatore esponenziale utilizzato per fornire l'esponente e ottenere il valore. Es: 22 = 43 = 27 |
$x=5**5; # O $x=4; $y=2; $z=$x**$y; |
|
% |
Operatore modulo utilizzato per ottenere il promemoria durante la divisione di due valori o variabili che contengono valori |
$x=5%2; # O $x=10; $y=2; $z=$x % $y; |
|
++ |
Operatore di addizione unario per incrementare il valore di una variabile di 1 |
$x=5; $x++; Or ++$x; |
|
- |
Operatore di sottrazione unaria per diminuire il valore di una variabile di 1 |
$x=5; $xโ; # post decremento Or โ$x;# pre-decremento |
Esempio per completare tutte le operazioni sopra indicate.
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");
Produzione:
La somma di 10 e 2 fa 12
Il sottotitolo di 10 e 2 fa 8
Mul di 10 e 2 fa 20
Div di 10 e 2 รจ 5
L'Exp di 10 e 2 รจ 100
Mod di 10 e 2 รจ 0
Assegnazione Operatori:
Gli operatori di assegnazione assegnano semplicemente valori alle variabili, ma c'รจ un'altra cosa che dobbiamo ricordare qui, gli operatori di assegnazione eseguiranno anche operazioni aritmetiche e assegneranno il nuovo valore alla stessa variabile su cui viene eseguita l'operazione.
| Operator | Descrizione | Esempio |
|---|---|---|
|
+= |
Operatore di addizione utilizzato per aggiungere e assegnare il valore alla stessa variabile |
$x=4; $x+=10; |
|
-= |
Operatore di sottrazione utilizzato per sottrarre e assegnare il valore alla stessa variabile |
$x=4; $x-=10; |
|
*= |
Operatore di moltiplicazione utilizzato per sommare e assegnare il valore alla stessa variabile |
$x=4; $x*=10; |
|
/= |
Operatore di divisione utilizzato per dividere e assegnare il valore alla stessa variabile |
$x=4; $x/=10; |
|
** = |
Operatore esponenziale utilizzato per ottenere l'esponente e assegnare il valore alla stessa variabile |
$x=4; $x**=10; |
|
%= |
Operatore modulo utilizzato per ottenere un promemoria durante la divisione e assegnare il valore alla stessa variabile |
$x=10; $x%=4; |
Esempio per completare tutte le operazioni sopra indicate.
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");
Produzione:
Aggiungi = 15
Sotto=10
Mul = 50
Div = 10
Logico e relazionale Operatori:
Perl utilizza operatori logici per confrontare numeri e stringhe. Nella maggior parte dei casi gli operatori logici vengono utilizzati nelle istruzioni condizionali.
Logico e relazionale Operatori in Perl
| Operator | Descrizione |
|---|---|
|
==o eq |
Operator utilizzato per verificare se entrambe le variabili sono uguali |
|
!=Oppure no |
Operator utilizzato per verificare se entrambe le variabili non sono uguali |
|
> o g |
Operator usato per verificare se A รจ maggiore di B |
|
<or lt |
Operator usato per verificare se A รจ minore di B |
|
>=o ge |
Operator usato per verificare se A รจ maggiore o uguale a B |
|
<=o le |
Operator usato per verificare se A รจ minore o uguale a B |
|
|| o o |
Operautilizzato per verificare che A o B mantengano valore |
|
&&o e |
Operator utilizzato per verificare che sia A che B mantengano valore |
Facciamo un esempio in cui possiamo spiegare tutti gli scenari.
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");
}
Produzione:
Vero: uguale 5 e 5
Vero, non uguale a 6 e 7
Vero: 7 maggiore di 6
Vero: 6 meno di 7
Vero: 6 meno di 7
Vero: 7 maggiore di 6
Esempi di operatori logici sono disponibili nelle sezioni successive.
Variabili speciali Perl
Cosa sono le variabili speciali di Perl?
Le variabili speciali in Perl sono quelle che hanno un significato predefinito. Queste variabili sono indicate con nomi reali o simboli di punteggiatura. Abbiamo una variabile speciale per tutte le variabili supportate da Perl come variabili speciali scalari, variabili speciali di array, variabili speciali hash. La maggior parte delle variabili speciali che usiamo sono scalari.
Quando vogliamo utilizzare la variabile speciale con il suo nome, dobbiamo caricare un modulo Perl 'use English', per dire esplicitamente all'interprete Perl che utilizzeremo variabili speciali utilizzando il suo nome.
Variabili speciali scalari
| Variabile | Descrizione |
|---|---|
|
$_$ARG |
Questa รจ la variabile predefinita che memorizza i valori correnti. |
|
$ 0 o $PROGRAM_NAME |
Memorizza il nome del file dello script Perl. |
|
$/ |
Il separatore del record di input ha il valore predefinito '\n' che รจ il carattere di nuova riga |
|
$. |
Contiene il numero di riga corrente del file che viene letto |
|
$, |
Separatore del campo di output, viene utilizzato principalmente dall'istruzione print(). Per impostazione predefinita, il valore รจ impostato su 0, possiamo modificare il valore di questa variabile. |
|
$\ |
Separatore del record di output, il valore di questa variabile sarร vuoto; possiamo assegnare qualsiasi valore a questo, che verrร utilizzato dall'istruzione print() durante la stampa dell'output. |
|
$# |
Questa variabile viene utilizzata per il formato di output durante la stampa dei numeri. |
|
$%$FORMAT_PAGE_NUMBER |
Manterrร il numero di pagina corrente del file letto. |
|
$=$FORMAT_LINES_PER_PAGE |
Manterrร la lunghezza della pagina corrente del file letto. |
|
$-$FORMAT_LINES_LEFT |
Contiene il valore del numero di righe rimaste da stampare dalla pagina. |
|
$~$FORMAT_NAME |
Nome formato: contiene il formato dell'output attualmente selezionato per impostazione predefinita, il nome dell'handle del file. |
|
$^$FORMAT_TOP_NAME |
Contiene il valore del formato dell'intestazione del gestore di file, per impostazione predefinita il valore sarร _TOP seguito dal nome del gestore di file. |
|
$|$OUTPUT_AUTOFLUSH |
Il valore predefinito รจ zero; questo valore viene utilizzato per svuotare il buffer di output dopo ogni write() o print(). |
|
$$ |
Manterrร il numero del processo in esecuzione dell'interprete Perl. |
|
$? |
Codice di stato: chiamata di tubo e di sistema. Lo stato di ritorno del comando eseguito. |
|
$&$PARTITA |
Utilizzato nelle espressioni regolari, conterrร una stringa dell'ultimo pattern match riuscito. |
|
$`$PREMATCH |
Utilizzato nelle espressioni regolari, manterrร la stringa preceduta dall'ultimo pattern match riuscito. |
|
$'$POST PARTITA |
Utilizzato nelle espressioni regolari, conterrร una stringa seguita dall'ultimo pattern match riuscito. |
|
$+$LAST_PAREN_MATCH |
Contiene la stringa dell'ultima parentesi che corrisponde all'ultimo modello di ricerca. |
|
$ |
$ 1, $ 2, $ 3โฆ. Mantiene i valori del modello abbinati in ordine. |
|
$[ |
Primo indice: Array, una sottostringa. |
|
$] |
Una versione di Perl. |
|
$โ |
Il separatore utilizzato per gli elementi dell'elenco, per impostazione predefinita, รจ uno spazio bianco. |
|
$; |
Separatore di pedice utilizzato negli array multidimensionali |
|
$! |
In contesto numerico, stampa il numero dell'errore. Nel contesto di una stringa, stampa l'errore. |
|
$@ |
Manterrร le informazioni sull'errore di sintassi, utilizzate quando viene utilizzato eval(). |
|
$< |
Contiene l'UID reale (ID utente) del processo che esegue lo script. |
|
$> |
Contiene l'UID effettivo del processo che esegue lo script. |
|
$( |
Contiene il GID reale (ID gruppo) del processo che esegue lo script. |
|
$) |
Contiene il GID effettivo del processo che esegue lo script. |
|
$^D$DEBUG |
Contiene il valore corrente dei flag di debug. |
|
$^C |
Mantiene il valore corrente del flag quando viene utilizzata l'opzione della riga di comando โc. |
|
$^F |
Il descrittore massimo di file di sistema, per valore predefinito, รจ impostato su 2 |
|
$^I$INPLACE_EDIT |
Contiene il valore dell'opzione della riga di comando โi. |
|
$^M |
ร possibile utilizzare un pool di memoria speciale quando lo script Perl muore a causa di un errore di memoria esaurita. |
|
$^O$NOMEOS |
Operavengono memorizzate le informazioni di sistema. 'Linux' per i sistemi Linux, 'mswin32' per Windows sistemi. |
|
$^T$BASETIME |
Il tempo in cui gli script vengono eseguiti in secondi. |
|
$^W$ATTENZIONE |
Il valore corrente dell'opzione della riga di comando โw. Interruttore di avviso. |
|
$ARGV |
Nome del file corrente, quando viene utilizzato <>. |
Variabili speciali dell'array:
| Variabile | Descrizione |
|---|---|
|
@INC |
Contiene un elenco di percorsi in cui รจ possibile esaminare i moduli o gli script della libreria Perl durante l'esecuzione dello script corrente. Questo @INC viene utilizzato dalle istruzioni use e require per cercare in quei percorsi i moduli della libreria. |
|
@ARGV |
Memorizza gli argomenti della riga di comando passati. |
|
@_ |
Utilizzato nelle subroutine, durante il passaggio dei parametri alle subroutine. |
|
@F |
Questo รจ l'array in cui vengono memorizzate le righe di input quando viene utilizzata la suddivisione automatica โa (viene utilizzato lo switch della riga di comando). |
Variabili speciali hash:
| Variabile | Descrizione |
|---|---|
|
%INC |
Il nome del file sarร le chiavi; i valori saranno il percorso di quei file. Utilizzato da fare, utilizzare e richiedere. |
|
% ENV |
Variabili ambientali del sistema. |
|
%SIG |
Signals gestore. |
Espressione regolare Perl
Cos'รจ l'espressione regolare?
L'espressione regolare di Perl รจ sufficientemente forte da far corrispondere i modelli di stringa all'interno di un'istruzione o di un gruppo di istruzioni. Le espressioni regolari vengono utilizzate principalmente nell'analisi del testo, nella corrispondenza dei modelli e molto altro in base ai requisiti. Abbiamo alcuni operatori, che vengono utilizzati specialmente dal pattern binding delle espressioni regolari =~ e !~, Questi sono operatori di test e di assegnazione.
Regular Expression OperaTors
Regular Expression Operatori in Perl
- Perl Match โ m//
- Sostituto Perl โ s///
- Traslitterazione Perl โ tr///
Prima di andare oltre, dobbiamo sapere alcune cose sulle espressioni regolari; ci sono alcune cose come i caratteri Meta, i caratteri jolly nella sintassi Perl Regex.
| carbonizzare | Significato |
|---|---|
|
\ |
Speciale o preventivo |
|
* |
Corrisponde a 0 o piรน caratteri |
|
+ |
Corrisponde a 1 o piรน caratteri |
|
? |
Corrisponde a 0 o 1 carattere |
|
| |
Puรฒ essere utilizzato per abbinare modelli alternativi |
|
() |
Utilizzato per memorizzare il modello abbinato |
|
[] |
ร possibile passare un set di caratteri. Specificamente utilizzato per numeri e alfabeti. |
|
{} |
Utilizzato per fornire il numero di volte in cui รจ possibile eseguire la partita. |
|
^ |
Inizio della corda |
|
$ |
Fine della stringa |
|
\w |
Utilizzato per corrispondere a un singolo carattere o parola che puรฒ essere alfanumerico incluso "_" |
|
\W |
Corrisponde a qualsiasi cosa diversa da quella alfanumerica |
|
\s |
Utilizzato per abbinare gli spazi bianchi |
|
\S |
Corrisponde a qualsiasi cosa diversa dagli spazi bianchi |
|
\d |
Abbina i numeri. Non valori decimali e valori negativi |
|
\D |
Abbina qualsiasi cosa diversa dai numeri. |
|
\t |
Abbina lo spazio della scheda |
|
\n |
Corrisponde a nuova riga |
Quelli sopra riportati sono l'insieme di caratteri che possono essere utilizzati durante la corrispondenza dei modelli.
Vediamo alcuni esempi.
Considera una situazione in cui l'utente fornisce alcuni input durante l'esecuzione dello script e vogliamo verificare se l'utente ha inserito o meno un nome come input. Dobbiamo scrivere una sintassi di espressione regolare per estrarre il tuo nome e stampare lo stesso.
my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
print "Found Pattern";
}
else
{
print "unable to find the pattern";
}
Produzione:
Modello trovato
Qui abbiamo scritto l'espressione regolare come /.*(Guru99).*/.* corrisponde a tutti i caratteri in una stringa. UN '.' in Perl la corrispondenza regex si riferisce a qualsiasi carattere compreso lo spazio.
Vediamo come possiamo costruire esattamente una Regex.
Considera un esempio di una stringa di piรน parole e cifre e simboli speciali come questo "Ciao a tutti, questo รจ il mio numero: +91-99298373639";
Regex : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i
Parola spazio parola spazio parola spazio parola spazio parola spazio parola spazio carattere speciale: spazio carattere speciale+cifre carattere speciale โcifre.
Perl Match OperaTors
Gli operatori di corrispondenza vengono utilizzati per abbinare una stringa all'interno di alcune istruzioni o in una variabile.
my $var="Hello this is perl";
if($var=~m/perl/)
{
print "true";
}
else
{
print "False";
}
Produzione:
vero
Questo piccolo codice verrร stampato come "vero", poichรฉ il modello di corrispondenza Perl identifica la stringa in una variabile. Fondamentalmente, Perl cerca il testo fornito in // in tutta la stringa, anche se lo trova in un punto restituirร 'true'. Il modello puรฒ trovarsi ovunque nella variabile. Possiamo provare a sostituire =~ con !~ per vedere la differenza tra questi due operatori.
Sostituzione Perl Operator
Questo operatore puรฒ essere utilizzato per cercare e sostituire qualsiasi carattere con null o con un altro carattere.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
Produzione:
violoncello, come stai?
Nota: possiamo effettivamente utilizzare qualsiasi stringa di corrispondenza del modello come abbiamo fatto in precedenza anche in questo operatore di sostituzione. Qui abbiamo usato 'gi', g-globally, i-ignore case.
Traduzione Perl Operator
ร simile a Substitution, ma non utilizza alcuna espressione regolare Perl, piuttosto possiamo passare direttamente il valore o una parola che vogliamo sostituire.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
Produzione:
Ciao mucca, sei tu
I/O dei file Perl
Perl รจ stato progettato per manipolare file e operazioni di I/O in modo efficace. Il vantaggio principale di Perl รจ nell'analisi e nella gestione dei file. Ci sono molte funzioni e operatori integrati utilizzati durante la gestione dei file in Perl.
Fondamentalmente, le operazioni sui file eseguite con Perl vengono eseguite utilizzando FILEHANDLE. Dobbiamo definire questo FILEHANDLE durante l'apertura di un file sia in lettura che in scrittura.
In questo tutorial sugli script Perl imparerai:
Perl Apri il file
Possiamo aprire un file utilizzando la funzione open() disponibile in Perl.
open(FILEHANDLE, "filename or complete path of the file");
Ora abbiamo aperto un file, ora sorge una domanda. Serve per leggere o scrivere?
Perl Leggi file e Perl Scrivi file
Perl ha determinate modalitร che devono essere utilizzate per leggere, scrivere o aggiungere un file.
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");
Alcuni esempi di lettura di un file:

Considera che abbiamo un file Perl con il nome file.txt e contiene poche righe di testo. Dobbiamo aprire questo file e stampare lo stesso.
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;
Questo stamperร il contenuto del file sulla schermata di output.
Ora scriveremo un programma per creare e scrivere dati in un file perl.

open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Questo scriverร l'input fornito durante il runtime e creerร un file test.txt che conterrร l'input.
Il metodo sopra descritto proverร sempre a creare un file denominato test.txt e scriverร l'input nel file; scriveremo lo stesso per aggiungere il file.

open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
| Modalitร | Descrizione |
|---|---|
|
< |
Leggi |
|
+< |
Legge e scrive |
|
> |
Crea, scrive e tronca |
|
+> |
Leggere, scrivere, creare e troncare |
|
>> |
Scrive, aggiunge e crea |
|
+>> |
Leggere, scrivere, aggiungere e creare |
Ora dobbiamo vedere come leggere, scrivere e aggiungere file utilizzando esempi di base.
Vedremo alcuni altri esempi e altre funzioni che aiutano a comprendere meglio i file.
Perl Tell
Questo metodo restituirร la posizione corrente di FILEHANDLER in byte se specificato altrimenti considererร l'ultima riga come posizione.
open(FH, "test.pl");
while(<FH>)
{
$a=tell FH;
print "$a";
}
Ricerca Perl
La funzione di ricerca รจ simile alla chiamata di sistema fseek. Questo metodo viene utilizzato per posizionare il puntatore del file in una posizione specifica specificando i byte seguiti dall'inizio o dalla fine del puntatore del file.
seek FH, bytes, WHENCE;
DOVE รจ la posizione del puntatore del file da cui iniziare. Zero lo imposterร dall'inizio del file.
Esempio: lascia che input.txt contenga alcuni dati come "Ciao, questo รจ il mio mondo".
open FH, '+<','input.txt'; seek FH, 5, 0; # This will start reading data after 5 bytes. $/ = undef; $out = <FH>; print $out; close FH;
Produzione:
questo รจ il mio mondo
Perl Scollega
Lo scollegamento viene utilizzato per eliminare il file.
unlink("filename or complete file path");
Gestione delle directory:
Possiamo anche gestire directory attraverso le quali possiamo gestire piรน file.
vediamo come aprire una directory. Possiamo usare i metodi 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);
Questo stamperร tutti i file disponibili in quella directory.
Test dei file Perl e loro significato
|
-r |
Per verificare se il file/directory รจ leggibile dall'utente/gruppo corrente |
|
-w |
Per verificare se il file/directory รจ scrivibile dall'utente/gruppo corrente |
|
-x |
Per verificare se il file/directory รจ eseguibile dall'utente/gruppo corrente |
|
-o |
Per verificare se il file/directory รจ di proprietร dell'utente corrente |
|
-R |
Per verificare se il file/directory รจ leggibile da questo utente/gruppo reale |
|
-W |
Per verificare se il file/directory รจ scrivibile da questo utente/gruppo reale |
|
-X |
Per verificare se il file/directory รจ eseguibile da questo utente/gruppo reale |
|
-O |
Per verificare se il file/directory รจ di proprietร di questo utente reale |
|
-e |
Per verificare se il nome del file/directory esiste |
|
-z |
Per verificare se il file esiste e ha dimensione zero (sempre falso per le directory) |
|
-f |
Per verificare se Entry รจ un file semplice |
|
-d |
Per verificare se Entry รจ una directory |
|
-l |
Per verificare se Entry รจ un collegamento simbolico |
|
-S |
Per verificare se Entry รจ un socket |
|
-p |
Per verificare se Entry รจ una pipe denominata (una "FIFO") |
|
-b |
Per verificare se Entry รจ un file speciale a blocchi (come un disco montabile) |
|
-c |
Per verificare se Entry รจ un file di caratteri speciali (come un dispositivo I/O) |
|
-u |
Per verificare se il file o la directory รจ setuid |
|
-g |
Per verificare se il file o la directory sono setgid |
|
-k |
Per verificare se il file o la directory hanno lo sticky bit impostato |
|
-t |
Il filehandle fornito รจ un TTY (come per la funzione di sistema isatty(), i nomi dei file non possono essere testati da questo test) |
|
-T |
Per verificare se il file assomiglia a un file di "testo". |
|
-B |
Per verificare se File assomiglia a un file "binario". |
|
-M |
Per verificare l'etร della modifica (misurata in giorni) del file |
|
-A |
Per verificare l'etร di accesso (misurata in giorni) del file |
|
-C |
Per verificare l'etร di modifica dell'inode (misurata in giorni) del file |
Subroutine Perl
Cos'รจ la subroutine?
subroutine sono simili alle funzioni di altri linguaggi di programmazione. Abbiamo giร utilizzato alcune funzioni integrate come print, chomp, chomp, ecc. Possiamo scrivere le nostre subroutine in Perl. Queste subroutine possono essere scritte ovunque nel programma; รจ preferibile posizionare i sottoprogrammi all'inizio o alla fine del codice.

Esempio di subroutine
sub subroutine_name
{
Statementsโฆ; # this is how typical subroutines look like.
}
Ora che sappiamo come scrivere una subroutine, come possiamo accedervi?
Dobbiamo accedere o chiamare una subroutine utilizzando il nome della subroutine preceduto dal simbolo "&".
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
Passaggio di parametri Perl e argomenti Perl
Le subroutine o le funzioni Perl vengono scritte per inserire al loro interno il codice riutilizzabile. La maggior parte del codice riutilizzabile richiede che i parametri vengano passati alla subroutine. Qui impareremo come passare gli argomenti alla subroutine.
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.
Produzione:
3 รจ il valore passato
@_ รจ una variabile array speciale che memorizza gli argomenti passati alle subroutine.
Perl Shift
Possiamo anche usare la parola chiave 'shift' che sposta un parametro alla volta in una variabile o $_[0],$_[1]... che รจ un singolo elemento dell'array @_
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
Produzione:
ciao รจ passato
Le subroutine vengono generalmente utilizzate nella programmazione orientata agli oggetti e anche in luoghi in cui รจ possibile inserire piรน codice riutilizzabile.
La funzionalitร principale delle subroutine รจ eseguire alcune attivitร e restituire il risultato del codice riutilizzabile.

Possiamo restituire un valore dalla subroutine utilizzando la parola chiave return.
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
Produzione:
11
$result manterrร il valore di $a e $b aggiunti.
Possiamo anche passare hash e array direttamente alla subroutine.
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
Produzione:
1a2b
Possiamo anche restituire un hash o un 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;
Produzione:
All'interno della subroutine2b1aDopo la chiamata della subroutine2b1a
Formato Perl
Perl ha un meccanismo tramite il quale possiamo generare report. Utilizzando questa funzionalitร , possiamo creare report esattamente come vogliamo, mentre li stampiamo sullo schermo Output o in un file. Un formato semplice puรฒ essere scritto utilizzando le funzioni printf o sprintf disponibili in Perl.
printf "%05d\n", 30;
Ciรฒ includerร degli zeri iniziali davanti al numero 30, per un conteggio totale delle cifre pari a 5. Lo stesso puรฒ essere utilizzato per sprintf.
sprintf "%05d\n", 30; # This will print the same as printf.
Utilizzando printf e sprintf, possiamo ottenere la maggior parte dei formati Perl. Nel caso dei report, sarร difficile da implementare.
================================================== =========================
Nome Indirizzo Etร Telefono
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232
Quanto sopra รจ un esempio che segnala che dobbiamo stampare nello stesso modo in Perl. Questo puรฒ essere ottenuto usando perl printf e perl sprintf. Puรฒ essere implementato efficacemente usando format.
Un formato puรฒ essere dichiarato nel modo seguente.
format FORMATNAME=FORMATLIST.
Qui utilizzeremo un particolare metodo di scrittura per stampare i dati sulla schermata di output o nel file.
| Simbolo | Descrizione |
|---|---|
|
@ |
Utilizzato per rappresentare l'inizio del titolare del campo |
|
> |
Giusto allineamento del testo |
|
< |
Allineamento del testo a sinistra |
|
| |
Allineamento centrale |
|
# |
Numerico se sono forniti piรน #. Assume come commento se viene fornito un singolo # |
|
. |
Punto decimale |
|
^ |
L'inizio del titolare del campo puรฒ essere utilizzato anche per multiriga e anche per il ritorno a capo automatico |
|
~ |
La riga dovrebbe essere vuota se la variabile รจ vuota |
|
@* |
Linee multiple. |
($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
.
Esegui il codice per vedere l'output.
Stiamo utilizzando il simbolo @ per specificare l'inizio del titolare del campo o della stringa, '<' ogni carattere.
Stiamo utilizzando STDOUT per stampare sull'output standard. Possiamo cambiarlo nel gestore di file che stiamo utilizzando per scrivere i dati nel file.
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
Possiamo sostituire '<' con '>' o '|' per modificare l'allineamento del testo.STDOUT_TOP viene utilizzato per progettare l'intestazione del formato. Possiamo anche utilizzare lo stesso con il gestore di file utilizzando FH_TOP (FH รจ il gestore di file). Ciรฒ restituirร il formato al file su cui stiamo lavorando SU.
Standard di codifica Perl
Ogni programmatore avrร il proprio senso di scrivere il codice utilizzando determinati standard; questi standard dovrebbero essere sufficientemente familiari da consentire ad altri programmatori di comprendere e supportare correttamente il codice.
Standard di codifica in Perl
Scrivere codice รจ semplice e facile. Il problema sorge quando รจ necessario mantenerlo in fasi successive. Durante la scrittura del codice, รจ necessario seguire linee guida e standard di codifica appropriati. Perl definisce anche alcuni standard che saranno utili ai programmatori per scrivere codice. Si consiglia di caricare 'strict' e 'warnings module' durante la scrittura del codice. Ognuno di questi moduli ha la sua importanza. Strict ci farร dichiarare la variabile prima di utilizzarla e ci dirร anche se nel codice รจ presente una parola nuda. In alternativa, il modulo Warnings puรฒ essere utilizzato passando l'opzione '-w' all'interprete Perl in shebang. Gli Warnings verranno stampati sullo schermo di output.
#!/usr/bin/perl โw
Di seguito sono riportati alcuni elenchi di standard.
- Utilizza i moduli 'rigorosi' e 'avvisi'.
- Rimuovi la variabile che non รจ in uso.
- I nomi delle variabili dovrebbero essere comprensibili agli altri utenti. Esempio: $nome, @fileData ecc.
- La documentazione รจ richiesta durante la codifica di uno script.
- Non codificare alcun valore, piuttosto provare a recuperarli dinamicamente o chiedere all'utente di inserirli durante il runtime (percorso file, nomi file).
- Massimizza il riutilizzo del codice. Prova a inserire il codice riutilizzabile nelle subroutine.
- Il significato dei nomi completi dovrebbe essere dato alle subroutine.
- Le subroutine devono essere scritte con commenti e documentazione appropriati.
- Inizializza sempre le variabili.
- Controlla sempre i codici di ritorno per le chiamate di sistema. L'apertura di un file puรฒ avvenire o meno, avere un codice di ritorno qui visualizzerร lo stato di errore se il file non esiste.
Esempio: aperto(FH,
- La subroutine dovrebbe sempre restituire un valore.
- Apri i ricci sulla stessa linea.
- Il BLOCCO a linea singola puรฒ essere posizionato in una linea singola con riccio.
- Usa le etichette durante i LOOPS, sarร facile uscire dal loop ogni volta che sarร necessario.
- Utilizzare il carattere di sottolineatura mentre frasi lunghe di parole vengono scritte come nome di variabile o subroutine.
- Prova a utilizzare semplici espressioni regolari durante la codifica.
Esempio perfetto con standard di codifica:
#######################################################################
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
Gestione degli errori Perl
Che cos'รจ un'eccezione?
Un'eccezione รจ un evento che si verifica durante l'esecuzione del programma e che sospenderร o terminerร il programma.
Gestione degli errori
La gestione degli errori รจ quella di cui ogni programmatore deve occuparsi durante la programmazione. Perl fornisce anche tecniche di gestione degli errori con le quali possiamo intercettare l'errore e gestirlo di conseguenza.
Gestione degli errori in Perl
Esistono molti modi per verificare la presenza di errori nel programma. Dobbiamo esaminare i codici di ritorno del codice della funzione che stiamo utilizzando. Se siamo in grado di gestire correttamente questi codici di ritorno, รจ possibile ottenere la maggior parte della gestione degli errori.
Cosa restituirร in caso di chiamate di sistema?
Nel caso delle chiamate di sistema, lo stato restituito verrร memorizzato in due variabili speciali $? E $!
$! โ Ciรฒ rileverร il numero di errore o il numero di errore associato al messaggio di errore.
$? โ Ciรฒ manterrร la funzione return status system().
Utilizzando l'operatore Perl o Logico
Possiamo utilizzare l'operatore logico o per la gestione degli errori durante l'utilizzo delle chiamate di sistema.
Es:
open(FH,"<test.txt");
Questo aprirร il file in modalitร lettura se il file esiste.
Cosa succede se manca il file?
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
Valutazione Perl
La funzione Eval puรฒ gestire errori fatali, errori in fase di compilazione, errori di runtime e quegli errori che terminano il codice in un determinato momento.
La funzione Perl Eval puรฒ avere un blocco di codice o un'espressione. Evals considera tutto ciรฒ che vi viene inserito come una stringa.
Consideriamo la situazione in cui si chiama una subroutine che non รจ definita nello script. In questa situazione, lo script termina affermando "subroutine non definita &XYZ, questo errore puรฒ essere gestito nella funzione eval.
Esistono molti usi del blocco evals; uno di questi usi รจ quando vogliamo caricare il modulo specifico del sistema operativo durante il runtime.
Esempio: la divisione per zero provoca un errore fatale; per gestire questo possiamo inserire il codice nel blocco evals.
$a=5;
$b=0;
eval
{
'$result=$a/$b';
}
if($@)
{
print "$@"; # All the error codes returned by evals will get stored in $@.
}
Produzione:
errore di sintassi in C:\Users\XYZ\Text.pl riga 8, vicino a ")
{"
Esecuzione di C:\Users\XYZ\Text.pl interrotta a causa di errori di compilazione.
Esempio: eval utilizzando l'istruzione perl die.
sub test
{
die "Dieing in sub test \n";
}
eval
{
test();
};
print "Caught : $@\n";
Produzione:
Catturato: Morire nel sub-test
Utilizzo di Perl Prova
Perl non supporta i blocchi try, catch e final code come altri linguaggi di programmazione. Possiamo ancora usarli caricando un modulo Perl esterno.
usa Prova::Tiny;
Usando questo possiamo inserire il tuo codice nel blocco try e rilevare l'errore nel blocco warn.
Al posto di $@ usato in eval Try::Tiny usa $_.
# gestire gli errori con un gestore catch
try
{
die "Die now";
}
catch
{
warn "caught error: $_"; # not $@
};
Utilizzando finalmente.
my $y;
try
{
die 'foo'
}
finally
{
$y = 'bar'
};
try
{
die 'Die now'
}
catch
{
warn "Returned from die: $_"
}
finally
{
$y = 'gone'
};
Produzione:
foo in C:\Users\XYZ\Text.pl riga 4.
Possiamo usare try, catch e finalmente in questo modo.
prova { # istruzione }
prendi {# istruzione }
infine { # istruzione };
Or
try
{
# statement
}
finally
{
# statement
};
Produzione:
Or
try
{
# statement
}
finally
{
# statement
}
catch
{
# statement
};
Produzione:
Programmazione Perl Socket
Cos'รจ una presa?

Il socket รจ un mezzo attraverso il quale due computer possono interagire su una rete utilizzando l'indirizzo e le porte di rete.
Supponiamo che A (Server) e B (Client) siano due sistemi, che devono interagire tra loro utilizzando Socket per eseguire alcuni programmi.
Per implementare ciรฒ dobbiamo creare socket sia in A (Server) che in B (Client), A sarร nello stato di ricezione e B sarร nello stato di invio.
A (Server):
Qui, il server desidera ricevere una connessione da B (Client) ed eseguire alcune attivitร e inviare il risultato a B (Client). Quando eseguiamo il codice, il sistema operativo in A tenta di creare un socket e associa una porta a quel socket. Quindi ascolterร dal mittente che รจ B.
B (Cliente).
Qui, il client desidera inviare un programma dal suo sistema ad A (Server) per alcune elaborazioni. Quando eseguiamo il codice, il sistema operativo in B tenta di creare un socket per comunicare con A (Server), B deve specificare l'indirizzo IP e il numero di porta di A a cui B desidera connettersi.
Se tutto va bene, entrambi i sistemi interagiranno per scambiare le informazioni attraverso una porta. Perl supporta anche la programmazione socket.
Perl ha un'API nativa attraverso la quale รจ possibile implementare i socket. Per semplificare, ci sono molti moduli CPAN con i quali scriviamo programmi socket.
Operazioni del server:
- Crea presa
- Associa il socket con l'indirizzo e la porta
- Ascolta il socket su quell'indirizzo di porta
- Accetta le connessioni client che tentano di connettersi utilizzando la porta e l'IP del server
- Eseguire le operazioni
. Operazioni:
- Crea presa
- Connettiti al server utilizzando l'indirizzo della sua porta
- Eseguire le operazioni

Presa.io
Questo รจ un modulo per la programmazione socket, che si basa sulla programmazione orientata agli oggetti. Questo modulo non supporta il tipo di rete INET utilizzato nelle reti.
IO::Presa::INET:
Questo modulo supporta il dominio INET ed รจ basato su IO::Sockets. Tutti i metodi disponibili in IO::Sockets sono ereditati nel modulo INET.
Client e server che utilizzano il protocollo TCP:
TCP รจ un protocollo orientato alla connessione; utilizzeremo questo protocollo per la programmazione del socket.
Prima di procedere oltre vediamo come possiamo creare un oggetto per il modulo IO::Socket::INET e creare un socket.
$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";
Il nuovo metodo nel modulo IO::Socket::INET accetta un hash come parametro di input per la subroutine. Questo hash รจ predefinito e dobbiamo solo fornire i valori alle chiavi che vogliamo utilizzare. C'รจ un elenco di chiavi utilizzate da questo hash.
|
PeerAddr |
Indirizzo dell'host remoto |
|
PeerHost |
Sinonimo di PeerAddr |
|
PeerPort |
Porta o servizio remoto |
|
Indirizzo locale |
Indirizzo di collegamento dell'host locale |
|
Localhost |
Sinonimo di LocalAddr |
|
Porta locale |
Porta di collegamento dell'host locale |
|
Proto |
Nome del protocollo (o numero) |
|
Tipo |
Tipo di socket |
|
Ascoltare |
Dimensioni della coda per l'ascolto |
|
RiutilizzaInd |
Imposta SO_REUSEADDR prima dell'associazione |
|
Riutilizzo |
Imposta SO_REUSEADDR prima dell'associazione |
|
RiutilizzaPorta |
Imposta SO_REUSEPORT prima dell'associazione |
|
Broadcast |
Imposta SO_BROADCAST prima dell'associazione |
|
timeout |
Valore di timeout per varie operazioni |
|
MultiHomed |
Prova tutti gli indirizzi per host multihomed |
|
Prodotti di blocco |
Determina se la connessione sarร in modalitร di blocco |
Server.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:
Nella programmazione del socket, dovremo eseguire prima Server.pl e poi client.pl individualmente in diversi prompt dei comandi se stiamo eseguendo l'host locale.
Che cosa sono i moduli e i pacchetti Perl
Moduli e pacchetti sono strettamente correlati tra loro e sono indipendenti. Pacchetto: un pacchetto Perl รจ anche noto come spazio dei nomi e contiene tutte le variabili univoche utilizzate come hash, array, scalari e subroutine. Modulo: il modulo รจ una raccolta di codice riutilizzabile, in cui scriviamo subroutine. Questi moduli possono essere caricati nei programmi Perl per utilizzare le subroutine scritte in quei moduli.
Cosa sono i moduli Perl?
I moduli standard verranno installati durante l'installazione di Perl su qualsiasi sistema. CPAN: Perl completo Archive Network โ Un repository globale di moduli Perl. I nostri moduli Perl personalizzati che possono essere scritti da noi. Fondamentalmente, un modulo quando caricato in qualsiasi script esporterร tutte le sue variabili globali e subroutine. Queste subroutine possono essere richiamate direttamente come se fossero dichiarate nello script stesso. I moduli Perl possono essere scritti con estensione .pm nel nome file Ex: Foo.pm. Un modulo puรฒ essere scritto utilizzando il "pacchetto Foo" all'inizio del programma.
Modulo Perl di base:
#!/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;
Nessuna uscita
Per utilizzare questo modulo Perl, dobbiamo inserirlo nella directory attualmente funzionante.
Possiamo caricare un modulo Perl utilizzando require o utilizzare ovunque nel codice. La differenza principale tra require e use รจ che richiedono il modulo caricato durante il runtime e utilizzano i carichi durante la compilazione.
#!/usr/bin/perl require Arithmetic; print Arithmetic::add(5,6); print Arithmetic:: subtract (5,6);
Qui, nell'esempio precedente, stiamo accedendo alle subroutine utilizzando il nome del modulo completo.
Possiamo anche accedere al pacchetto usando 'use Arithmetic'.
Esportatore:
Questo modulo ha una funzionalitร predefinita di metodi di importazione.
#!/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;
L'array @EXPORT puรฒ essere utilizzato per passare un elenco di variabili e subroutine che per impostazione predefinita verranno esportate al chiamante del modulo.
L'array @EXPORT_OK puรฒ essere utilizzato per passare un elenco di variabili e subroutine che verranno esportate su richiesta, dove l'utente deve specificare durante il caricamento del modulo.
#!/usr/bin/perl use Arithmetic qw(subtract); print add(5,6); print subtract (5,6);
Per impostazione predefinita, verrร esportata la subroutine aggiunta. Il metodo di sottrazione non verrร esportato se non viene specificato durante il caricamento del modulo.
Programmazione orientata agli oggetti in Perl
In questa sezione impareremo come creare moduli Perl orientati agli oggetti. Per prima cosa, vediamo qual รจ l'oggetto? Un oggetto รจ un'istanza tramite la quale possiamo accedere, modificare e localizzare alcuni dati in qualsiasi modulo Perl. Questo non รจ altro che far sรฌ che il pacchetto Perl esistente, le variabili e le subroutine agiscano come classi, oggetti e metodi in riferimento ad altri linguaggi di programmazione.
Crea classe
Sappiamo giร come creare moduli dall'argomento precedente. Lo scopo della classe รจ memorizzare metodi e variabili. Un modulo Perl avrร subroutine che sono metodi. Dobbiamo accedere a tali variabili e oggetti subroutine.
Costruttore Perl
Un costruttore in Perl รจ un metodo che verrร eseguito e ci restituirร un riferimento con il nome del modulo taggato al riferimento. Questa รจ chiamata benedizione della classe. Usiamo una variabile particolare per benedire una classe perl, che รจ bless.
#!/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;
Il nuovo metodo utilizzato come costruttore per una classe, questo costruttore creerร un oggetto per noi e tornerร allo script che sta chiamando questo costruttore.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Qui dobbiamo capire come รจ stato creato l'oggetto. Ogni volta che proviamo a creare un oggetto per la classe, dobbiamo utilizzare il nome completo della classe. Supponiamo che la classe perl si trovi in โโqualche lib\Math\Arithmetic.pm. E, se vogliamo accedere a questa classe perl dalla directory lib, dobbiamo fornire l'intero percorso della classe mentre chiamiamo lo script.
utilizzare lib::Math::Arithmetic;
my $obj = lib::Math::Arithmetic->new();
Ecco come avviene la creazione dell'oggetto in Perl.
@INC:
Come fa lo script Perl a sapere dove esiste il modulo della libreria? Perl conosce solo la directory corrente dello script e il percorso della libreria incorporata di Perl. Ogni volta che utilizziamo un modulo Perl che non si trova nella directory corrente o nel percorso della libreria Perl, lo script fallirร sempre. Per quanto riguarda @INC, questo รจ un array che contiene tutti i percorsi di directory in cui deve cercare i moduli Perl. Prova a eseguire questo comando e guarda quale sarร l'output.
perl โe "print @INC"
Questo fornirร un output e questo รจ il percorso in cui saranno disponibili i moduli lib. Ogni volta che utilizziamo un nuovo modulo della libreria, dobbiamo dire a Perl, interprete, di esaminare quella particolare posizione in cui รจ disponibile il modulo Perl.
push(@INC, "PATH TO YOUR MODULE");
Impostalo come prima riga di codice. Questo dirร al tuo interprete di esaminare quel percorso. O uso
lib Arithmetic; # List here is your Perl Module location
Distruttore Perl
Per impostazione predefinita, il distruttore di un oggetto viene chiamato alla fine e prima della chiusura dello script. Questo viene utilizzato per distruggere i tuoi oggetti dalla memoria.
Script di shell PERL V/s
- La programmazione in Perl non causa problemi di portabilitร , cosa comune quando si utilizzano shell diverse nello scripting di shell.
- La gestione degli errori รจ molto semplice in Perl
- Si possono scrivere programmi lunghi e complessi su Perl facilmente grazie alla sua vastitร . Questo รจ in contrasto con Shell che non supporta namespace, moduli, oggetti, ereditarietร ecc.
- Shell ha meno librerie riutilizzabili disponibili. Niente in confronto al CPAN di Perl
- La Shell รจ meno sicura. Si chiama funzioni esterne (comandi come mv, cp ecc. dipendono dalla shell utilizzata). Al contrario Perl fa un lavoro utile durante l'utilizzo delle funzioni interne.
Come viene utilizzato PERL nei test di automazione
Perl รจ ampiamente utilizzato nell'automazione. Potrebbe non essere il miglior linguaggio di programmazione al mondo, ma รจ piรน adatto per determinati tipi di attivitร . Parliamo di dove e perchรฉ viene utilizzato Perl Test di automazione.
Test di archiviazione
Cos'รจ lo spazio di archiviazione? Dati archiviati in File.
Supponiamo di avere un file Storage correlato Test Case dove dobbiamo scrivere i dati su una partizione, leggerli e verificare che i dati siano scritti correttamente.
Questa operazione puรฒ essere eseguita manualmente, ma un tester manuale puรฒ eseguire le stesse operazioni 10000 volte? Sarร un incubo! Abbiamo bisogno di automazione
lo strumento migliore per automatizzare qualsiasi cosa relativa all'archiviazione รจ Perl per le sue tecniche di gestione dei file, REGEX e potente analisi dei file che consuma meno tempo di esecuzione rispetto ad altri linguaggi di programmazione.
Perchรฉ dobbiamo testare lo spazio di archiviazione? Pensate ai grandi Data Center in cui i dati fluiranno ininterrottamente da un sistema all'altro con migliaia di record archiviati al secondo. Testare la robustezza di tale meccanismo di archiviazione รจ essenziale.
Molte aziende come HP, Dell, IBM e molti produttori di server utilizzano Perl come interfaccia per testare la funzionalitร nei domini di archiviazione e rete. NetApp รจ una di queste aziende che lavora completamente sullo storage e utilizza Perl come linguaggio di programmazione per automatizzare i casi di test.
Se sei interessato a Perl Automation, sarebbe consigliabile conoscere Storage e reti Concepts.
Test di server e rete:
Test di server e rete utilizzando Perl
PERL รจ ampiamente utilizzato nel tempo di attivitร del server e nel monitoraggio delle prestazioni.
Considera un data center con 100 host (server). ร necessario connettersi a ciascun host ed eseguire alcuni comandi da remoto. Vuoi anche riavviare il sistema e controllare quando torna online.
Eseguire manualmente questa attivitร per tutti i 100 host sarร un incubo. Ma possiamo automatizzarlo facilmente usando PERL
Passaggi di progettazione per ottenere l'automazione di cui sopra utilizzando PERL
- Prendi input dal file sulle informazioni dell'host come (IP, nome utente e password).
- Utilizzare Net::SSH2 per connettersi a ciascun sistema e stabilire un canale per eseguire i comandi.
- Esegui la serie di comandi richiesti, ad esempio: ls, dir, ifconfig,ps ecc.
- Riavvia il sistema.
- Attendi 10 minuti affinchรฉ il sistema si avvii.
- Eseguire il ping del sistema utilizzando il modulo Net::Ping e stampare lo stato.
Codificheremo lo scenario sopra.
Prendiamo un file chiamato Input.txt che memorizzerร le informazioni complete su tutti gli host a cui dobbiamo connetterci ed eseguire il comando.
Ingresso.txt
192.168.1.2 password di root
192.168.1.3 password di root
192.168.1.4 radice radice123
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";
}
}
Test web
Perl non si limita solo ai test di archiviazione e rete. Possiamo anche eseguire test basati sul Web utilizzando PERL. WWW-Meccanizzare รจ un modulo utilizzato per test web. Fondamentalmente, non avvia alcun browser per testare la funzionalitร delle applicazioni web, ma utilizza il codice sorgente delle pagine html.
Possiamo anche eseguire test basati su browser utilizzando Selenium IDE, RC, driver Web. Perl รจ supportato Selenium.
\N"; #questo manterrร la stringa rimanente una volta completata la corrispondenza dello schema.
stampa "





