Învățarea Perl, Partea 1
Ca toate limbile moderne de programare, Pearl este orientat pe obiecte. Este posibilă și programarea în rețea (de exemplu, programarea socket-urilor). Programele Pearl sunt ușor de portat (un script bine scris va rula pe Linux, BSD, Solaris, DOS, Win9x, NT, MacOS, OS / 2, AmigaOS, VMS și alte platforme fără a fi nevoie să modifice codul sursă).
Nu contează cât timp folosiți Linux - sigur că ați auzit deja despre Pearl; este posibil să fi rulat un număr imens de scenarii, fără să știi asta. Programe precum inews, mirror, debconf, majordomo, sirc și multe altele sunt scrise pe Pearl și numai pe Pearl. Dacă utilizați un distro Debian, „incitat“ zgrep la dosar Packages.gz - se pare că 382 pachete depind de Perl (aceasta înseamnă că cea mai mare parte a pachetului este scris în Perl), iar pentru alte 28 de pachete este recomandat să aibă un Pearl.
De ce este Pearl bun?
Pearl este mare în prelucrarea textului și, de asemenea, pentru integrarea diferitelor lucruri într-un singur întreg. La urma urmei, pentru o limbă de scripting (scripturi) - toate aceste lucruri diferite sunt, în esență, același lucru.
--John Ousterhout, creatorul limbajului de scripting Tcl.
Ca toate limbile moderne de programare, Pearl este orientat pe obiecte. Este posibilă și programarea în rețea (de exemplu, programarea socket-urilor). Programul în Perl este ușor portat (scenariu bine scris va rula pe Linux, BSD, Solaris, DOS, Win9x, NT, MacOS, OS / 2, AmigaOS, VMS și alte platforme, fără a fi nevoie de modificarea codului sursă). Programul este de depanare rapid, deoarece nu trebuie să fie compilate - schimbați doar codul și rula script-ul. Există un număr mare de module suplimentare (implementarea de soluții standard), care vor îndeplini orice sarcină. Există, de asemenea, un Perl Archive rețea globală (CPAN) - cel mai bun poate visa Perl-programator.
Da. Impresionant. Dar care este esența lui Pearl?
Aceasta este o întrebare bună. Sper că aproximativ un an de la începutul programării pe Pearl, tu îmi poți da un răspuns la această întrebare. Descrierea a ceva este întotdeauna plasarea obiectului în anumite cadre. închizându-l într-un fel de cutie de concept. Încerc încă să găsesc una unde Pearl se potrivește complet (ar fi bine să găsești unul cu o încuietoare fiabilă).
Ce nu ar trebui să scrie despre Pearl?
Hmm. Personal, nu aș scrie un procesor de text cu o interfață grafică, jucării pentru calculator, un browser grafic. Nu, desigur, puteți crea interfețe de utilizare frumoase pe Pearl, dar încă mai cred că există limbi mai potrivite pentru astfel de scopuri. Ca avertisment pentru un programator începător, observ: "pentru o persoană cu un ciocan, orice problemă pare ca un cui."
De asemenea, rețineți că Pearl în sine nu este scris pe Pearl, nici kernel-ul Linux. Să lăsăm programele low-level C / C ++ și Assembler'u. Crezul fiecărui programator ar trebui să fie fraza: "Anumite instrumente pentru anumite sarcini".
Ultimul avertisment înainte de începere.
Dacă sunteți deja un pic familiarizat cu Pearl și vezi că metoda mea de prezentare, și soluțiile sunt diferite de cele deja învățate de tine, amintiți-vă doar motto-ul Perl „Există mai mult de un mod de a rezolva problema“ (există mai mult de un mod de a face sau TMTOWDI [citeste ca 'Tim-astăzi']). Aceasta este esența filologiei lui Pearl. Desigur, corectarea greșelilor evidente din textul meu este binevenită.
Cei care v-ați citit seria anterioară de articole dedicată programării Shell amintesc că scenariul începe cu așa-numitul "hash-bang" (semnul lagului # și punctul de exclamare!) Sau liniile "shebang"
Acest lucru este necesar pentru ca shell-ul să creeze un sub-shell unde codul dvs. va fi executat. Același lucru este necesar pentru Pearl:
Șirul poate varia în funcție de locul în care aveți interpretul Pearl.
Rețineți cerințele pe care șirul hash-bang trebuie să le îndeplinească:- Trebuie să fie primul din scenariu
- Lattice # trebuie să fie primul caracter de pe linie. Spații între # și. nu este permisă.
- Trebuie să specificați calea completă, nu doar numele executabilului.
Ei bine, atunci. Să încercăm să scriem primul nostru script pe Pearl:
#! / usr / bin / perl
# "la revedere" - un înlocuitor modern și ultra-depresiv pentru "Hello World"
print "Rămas bun, lume crudă! \ n";
deconectați 0 $;
Oh, apropo. Un pic despre cum să scrieți codul.
Eu personal sunt departe de a fi perfect în scrierea codului: am folosit pentru a scrie astfel de programe înainte, care sunt scrise și nu mai pot fi citite, deoarece nu pot fi înțelese. Dar imi imbunatatesc in mod constant si incerc sa imbunatatesc.
Perla percepe așa-numita "goliciune" - tabulare și spații - așa cum merită - adică ignoră. În acest sens, puteți structura codul în modul pe care credeți că este necesar pentru a transmite semnificația programului dvs. unor persoane neautorizate. De exemplu:
@boats = (Aloa, Cheoy Lee, Pearson, Mason, Swan, Westsail, S2, Petersen, Hereshoff); # Lista bărcilor
Astfel, am implementat procesul de completare a matricei "@boats" cu numele ambarcațiunilor. Nu este rău, dar puteți face la fel, dar într-un mod mai uman:
Această reprezentare a programului de testare nu este prerogativa Pearl - cele mai moderne limbi vă permit să utilizați "goluri" suplimentare pentru a face textul mai ușor de citit. În această serie de articole, voi încerca cel puțin să arăt ce înseamnă un bun stil de programare (din punctul meu de vedere) și aș vrea ca fiecare să ia în considerare acest aspect.
În Pearl, totul este supus principiului ușurinței de utilizare. Pearl este o limbă așa-numită "liberală", unde, de exemplu, nu puteți defini o variabilă ca fiind una care poate lua numai valori într-o serie de numere pozitive de 32 de biți pozitive.
În Pearl există 3 tipuri de variabile: scalar, matrice și hash. În ciuda acestor nume teribile, totul este de fapt destul de simplu: sunt doar variabile care stochează datele folosind o structură diferită.
variabile de tip "matrice" - liste cu scalare numerotate succesiv-
Denumită de simbolul "@" (@v, @list, @variable). De exemplu:
-
Chestiile sunt indicate de simbolul "%" (% people,% x,% this_is_a_hash). De exemplu:
Vă rugăm să rețineți că datele sunt stocate într-o matrice în modul determinat de numărul element de matrice, și hashes - nu: referirea la primul element al hash nu implică un apel la membrul pe care sunteți primul care a pus în hash. Accesul la elementele hash se face prin indexuri, nu prin poziția lor.
Folosind aceste trei tipuri de variabile, veți putea stoca orice date (și acces la ele) - și este simplu.
Având în vedere că variabilele pot conține date de diferite tipuri (numere și șiruri), operațiile cu aceste variabile necesită operatori diferiți
Amintiți-vă, utilizați regula: prin compararea literelor (liniilor), folosim literele.
Deoarece îmi place să dau exemple concrete, iată o rețetă pentru a deveni gri și a obține o defalcare nervoasă:
Um. Programul spune că nu există nicio diferență. Acest lucru, desigur, poate reflecta situația politică din țară, dar în detrimentul comparațiilor noastre. Da, da. Bineînțeles. A trebuit să folosim operatorii de comparare a șirurilor.
Acum operatorii de comparare lucrează așa cum au nevoie (da, dar logica politică se odihnește, dar încep să părăsesc acest subiect).
Apropo, de ce, în primul exemplu, Pearl a decis că "Al" și "George" sunt același lucru? De când au apărut programele cu politica?
Motivul, de fapt, este important, pentru că este vorba despre modul în care Pearl distinge între "adevărat" și "fals". Având în vedere că toate tipurile de controale - "dacă", "până", "până", etc. depind de acest principiu al discriminării, este important să o înțelegem.- "0" este întotdeauna o "minciună" (indiferent dacă valoarea unei variabile este un șir sau un număr)
- Toate variabilele nedefinite (cele fără valoare atribuită) sunt "false".
- Liniile goale sunt "" sau "-" "false".
- Restul este "adevărul".
Acum încercați să vă ocupați de tipii ăștia - adevărați sau falsi?
Răspunsul este la sfârșitul articolului.
Un alt punct important este interpolarea variabilelor, principiul prin care este hotărât să interpreteze sau nu expresia cuprinsă în ghilimele. De exemplu:
Op cu. Ce am obținut?
Vaca noastră este numită $ name.
Personal, nu cred că o vacă care se respectă cu adevărat va răspunde la un nume - $ name (nici măcar nu vorbesc despre cât de greu ar fi să pronunți un astfel de nume). Deci, cum reușim să facem ca vaca să răspundă?
Asta e tot! Vaca este a noastră! (cei care credeau că ceva rău se oprea imediat). Și toți mulțumesc lui Pearl. Ți-am spus că cu Pearl poți face totul.
Dacă am vrea să afișăm numele variabilei? Nici o problemă. În Pearl, acest lucru este rezolvat pur și simplu:
Aveți posibilitatea să imprimați orice metacharacter (adică unul rezervat în Perl) dacă aveți un backslash ("") înaintea lor. Uitați-vă la acest lucru:
Alegeți ceea ce vă place mai mult. Principalul lucru este să înțelegem diferența. Rețineți că diferite valori în expresia "print" sunt separate printr-o virgulă, dacă nu există o virgulă, atunci expresia a dobândit o semnificație complet diferită, dar despre aceasta data viitoare.
Înainte de a termina acest articol, aș dori să vă dau un alt sfat important. Utilizați întotdeauna opțiunea "-w" în prima linie a scriptului dvs.:
Aceasta va activa ieșirea mesajelor despre problemele care au apărut în timpul interpretării scriptului. În timp ce sunteți începător, asigurați-vă că utilizați acest parametru, iar pentru experți acest lucru este de două ori necesar. Greșelile nu dispar cu experiența - ei doar devin inteligenți :)
De data aceasta am făcut o scurtă plimbare în lumea programării din Pearl. Luna viitoare, vom merge mai departe. Poate că trebuie să explorăm tablouri și hași. sau, pentru prima dată, se aruncă în oceanul posibilităților de "expresii regulate" ale lui Perl (regexuri sau expresii regulate). Sfatul meu - încercați în practică ceea ce am studiat, experimentați - din experiența mea, știu că acesta este cel mai bun mod de a învăța limba - să experimentați până când ajungeți la limita posibilităților cu cunoștințele actuale și apoi solicitați ajutor cineva care știe mai multe. Amintiți-vă, nu veți primi răspunsuri bune decât dacă știți întrebările.
Mult noroc cu experimentele cu Pearl!
Răspunsul la întrebarea: Toată lumea este egală cu "adevărul". Niciuna dintre expresii nu satisface cerințele unor valori "false". "00" nu este "0", așa cum este "-1". Spațiul "" nu este un șir gol "", ci "5 - 5", dacă această expresie nu este egală cu nimic, atunci nu este egală cu 0.
Referințe: "Perl. Referința completă", Martin C. Brown