Un mic bug pe perl

Prin urmare, trebuie să înveți limbi pentru a crea programe care rulează pe server. Acestea sunt de obicei dezvoltate în Perl (Extracția practică și limbajul de referință al limbajului explicativ al extragerilor și rapoartelor), care este, de asemenea, utilizat pentru procesarea fluxurilor de informații. Inițial sa presupus că acesta va fi utilizat în sistemul de operare Unix, dar în viitor Perl a început să migreze spre alte platforme, iar acum există în diferite versiuni pentru Unix, Windows, MS-DOS, OS / 2, MacOS, Amiga, Atari ST, VMS , Planul 9 și altele.







Pentru ce este Perl?
Perl este conceput pentru a îndeplini sarcinile script-urilor de comandă Unix în cazurile în care acestea sunt prea dificile, prost portabile sau dificil de programat într-o altă limbă, de exemplu în C. Uneori, conținutul programelor Perl pare a fi neinițiați ca set de caractere aleatorii, dar, firește, are o sumă de control și fiecare simbol are scopul.

Pentru a crea și a testa programele Perl de care aveți nevoie:

Listarea 1. Programul de probă din Perl
#! / usr / local / bin / perl @passwords = qw (inet net de bază); print Introduceți datele de autentificare:; $ login =; chomp ($ autentificare); dacă ($ login eq Root) altfel altfel ($ i lucrez în Microsoft, MY => scrie acest articol, BC => lucrez ca președinte al SUA);
Indicii și elementele unei matrice pot fi închise atât în ​​apostrofuri, cât și în citate. Pentru a trece prin toate valorile AM, trebuie să utilizați instrucțiunea foreach. Acesta este conceput pentru a organiza cicluri, cum ar fi altele, în special în timp ce. Puteți accesa cheile și valorile utilizând operatorii de taste și valori.

O matrice asociativă specială% ENV stochează conținutul tuturor variabilelor indexate după nume. Astfel, $ ENV returnează valoarea curentă a căii de căutare. Există, de asemenea, o funcție fiecare, care enumeră cele două elemente ale cheii și valorii. Cu fiecare apel ulterior, returnează o nouă pereche, de exemplu

în timp ce (($ cheie, $ valoare) = fiecare% ENV)
Lucrul cu fișiere și directoare
Pentru a lucra corect în Perl cu fișiere și directoare, amintiți-vă câteva proceduri importante (consultați tabelul).

Descriptorul este un tip special de variabile de caractere (șir literal). Descriptorii de fișiere, precum și etichetele, sunt aplicați fără un caracter prefix special, astfel încât acestea pot fi confundate cu cuvintele existente sau rezervate (pentru subrutine, comenzi etc.). La programarea numelor descriptorilor, se recomandă să scrieți numai cu majuscule. În primul rând, acestea se disting ușor de restul textului și, în al doilea rând, datorită acestui fapt, programul va fi executat corect. Descriptorul este de obicei "numele" fișierului la care se referă utilizatorul. Ca și în programarea în Basic, Pascal sau C / C și ++, descriptorii din Perl sunt asemănători cu variabilele care sunt prezente în sintaxa de deschidere, închidere, citire sau scriere într-un fișier. Ca și alte limbi, Perl utilizează de asemenea descriptori în manipularea conținutului fișierelor. Cu toate acestea, există alte opțiuni pentru utilizarea lor.







Există trei moduri diferite de a deschide un fișier pentru citire (citire), adăugare și scriere.

Modul de citire (Citire) este cel mai simplu. Sintaxa funcției deschise este:

deschideți (HANDLE, filename.txt);
Instrucțiunea deschisă este utilizată pentru a deschide fișierul. Descrierea fișierului HANDLE este inclusă în paranteze. În viitor, când efectuați operații pe fișierul filename.txt și conținutul acestuia, vor fi furnizate referințe la acesta în program. În citate se află numele fișierului.

Pentru a citi informații dintr-un fișier, așa-numita operație de romb, notată de simbolurile ():

deschideți (HANDLE,> filename.txt);
Diferența dintre sintaxa operațiilor de scriere și sintaxa de citire este doar că simbolul fișierului este "mai mult decât" (>) înainte de numele fișierului. Acest semn vă spune să creați un fișier citat și să scrieți sau să actualizați (dacă există deja) conținutul acestuia. Pentru a scrie informații în aceasta, trebuie să vă referiți la ajutorul instrucțiunii de imprimare:

deschideți (HANDLE,> filename.txt); print HANDLE Scrieți acest text într-un fișier. ;
Modul înainte de a încerca să deschidă fișierul pentru citire este setat la false, înseamnă că fișierul nu există sau accesul la acesta este refuzat. Iar când această valoare este returnată atunci când deschideți fișierul pentru a introduce informații, puteți concluziona că fie fișierul este protejat prin scriere, fie că nu puteți scrie sau accesa directorul. Dacă programul iese din nou sau fișierul se deschide din nou, nu este necesar să îl închideți după finalizarea lucrului cu descriptorul, operația de deschidere a fișierului închide mânerul utilizat anterior. Cu toate acestea, este mai bine să închideți fișierul cu operația închisă. O astfel de structură este un "ton bun" în programare:

închideți (HANDLE);
Debugging. Ori de câte ori deschideți un fișier, este rezonabil să utilizați operatorul de operație cu operatorul deschis. Se întâmplă că fișierul nu poate fi deschis corect din nici un motiv. Programul pare să fi fost executat după cum este necesar, iar fișierul nu a fost scris deloc ce se aștepta. În acest caz, operatorul mor întrerupe execuția programului și afișează un mesaj de eroare la deschiderea fișierului.

Sintaxa pentru combinarea deschiderii și matriței folosește "logic OR" (||):

deschideți (HANDLE, >> filename.txt) || mor Eroare la adăugarea fișierului filename.txt la fișier!
Funcția de moarte, al cărei nume poate fi tradus din limba engleză ca "deschis sau mor", întrerupe executarea programului. Se afișează un mesaj de eroare, împreună cu informații despre ce a cauzat. Perl stochează informații despre cea mai recentă eroare de sistem din variabila specială $. Dacă introduceți $ după funcția de deformare. atunci vor fi primite date suplimentare de la sistemul de operare, care vor ajuta la depanarea programului.

Verificarea fișierelor. Acum puteți deschide descriptorul fișierului pentru înregistrare, distrugând fișierul existent cu același nume. Dar pentru aceasta, trebuie mai întâi să verificați dacă există un fișier cu acest nume, pentru a nu șterge orice informații importante. Ar trebui să se utilizeze următoarea construcție:

$ filename = numele fișierului.txt; dacă (-e $ numele fișierului) altfel
Iar pentru mai multe fișiere este posibil de îndată să aflăm dacă există prin simpla distrugere a primei linii a exemplului precedent și înlocuirea celui de-al doilea cu construcția

dacă (-e numele fișierului.001 -e filename.002) <
Există multe alte operații pentru verificarea fișierelor. De exemplu, pentru a vă asigura că există un fișier și capacitatea de a citi de la acesta, trebuie să efectuați -r în loc de -e și dacă doriți să scrieți w. Puteți verifica același fișier pentru accesul la citire și scriere, efectuând următoarele:

@files =; foreach (@ fișiere)
La majoritatea cecurilor similare, și aproximativ 20, valoarea returnată este adevărată sau falsă.

Diferențe de la Win32. Când lucrați cu Perl sub Windows, există câteva nuanțe pe care ar trebui să le cunoașteți. În primul rând, trebuie să specificați calea completă la fișier (împreună cu numele discului), peste care vor fi efectuate toate acțiunile, de exemplu

deschideți (HANDLE, c: /scripts/newfile.txt) || mizerie de deschidere c: /scripts/newfile.txt $!; ... închide (HANDLE);
În al doilea rând, blocarea fișierelor are loc diferit decât în ​​sistemele Unix. Dacă utilizați Windows 9.x, această operație nu este acceptată deloc, iar în Windows NT este foarte ciudat înainte de a executa comenzile de copiere sau de a schimba numele fișierului, trebuie să vă asigurați că ați închis-o deja. În caz contrar, pur și simplu nu vor fi îndeplinite.







Trimiteți-le prietenilor: