Perl de învățare

Conversia programelor awk la programele Perl

Una dintre cele mai remarcabile trăsături ale lui Perl este că este o supersetă semantică (la minimum) a limbajului awk. Din punct de vedere practic, aceasta înseamnă că, dacă puteți face orice în awk, puteți face acest lucru și în Perl. Cu toate acestea, Perl nu are compatibilitate sintactică cu awk. De exemplu, variabila NR (numărul înregistrării de intrare) awk este reprezentată în Perl ca $.







Dacă єst ae-program și doriți să rulați opțiunea Perl-l, este posibil să se efectueze Conversia mecanice program de ztoy Pomo-schyu A2P utilitar care єst de distribuție în Perl. Acest utilitar convertește sintaxa awk la sintaxa Perl și poate crea un script Perl direct executabil pentru marea majoritate a programelor ou.

$ a2p myperlprog $ perl myperlprog somefile Numărul de lămâi este de 15 $

De asemenea, puteți direcționa ieșirea standard a a2p direct în Perl, deoarece interpretul Perl acceptă programul de la intrarea standard dacă primește această instrucțiune:

$ a2p

Numărul de lămâi este de 15

Transformată pentru utilizarea în Perl aw ^ -stsenary obicei îndeplinește o funcție identică, de multe ori o rată mai mare Q, desigur, fără limitări inerente privind lungimea liniei awk, numărul de parametri, etc. Unele programe Perl convertite pot funcționa mai lent; O acțiune Perl echivalentă cu această operație awA nu va fi neapărat cel mai eficient cod Perl, comparativ cu tastarea manuală.

Poate doriți să optimizați codul Perl convertit sau să adăugați funcționalitate versiunii Perl a programului. Acest lucru este destul de simplu, deoarece codul Perl rezultat este citit destul de ușor (dat fiind că traducerea se face automat, ar trebui să fie remarcat ca o mare realizare).

Se convertesc programele sed la programele Perl

Poate veți descoperi că ne repetă, dar ghiciți ce vom spune? Iată ce: Perl este un superset semantic nu numai awk, ci și sed.

Kitul de distribuție este livrat cu un convertor sed-RetI, numit s2p. Ca a2p, s2p primește de la intrarea standard, voi





Programele convertite 5ƒ / / -program pot funcționa mai rapid sau mai lent decât originalul. De regulă, acestea funcționează mult mai rapid (datorită programelor Perl optimizate pentru procesarea expresiilor regulate).

Un script convertit waf poate funcționa cu opțiunea -n sau fără ea. Opțiunea -n are același înțeles ca și tasta corespunzătoare pentru sed. Pentru a utiliza această opțiune, scriptul convertit trebuie să se trimită la preprocesorul C, ceea ce încetinește oarecum lansarea. Dacă znaєte care va provoca întotdeauna convertit WDF-script cu opțiunea -p sau fără (de exemplu, atunci când conversia wfif-script utilizat în mare, cu argumente bine cunoscute ale shell-programe), vă puteți informa utilitatea despre ztom S2P (prin chei - n și -p) și optimizează scriptul pentru cheia selectată.

Ca un exemplu care demonstrează versatilitatea și puterea ridicată a limbajului Perl, să notăm că traducătorul s2p este scris în Perl. Dacă doriți să vedeți modul în care programele Larry la Perl, să ia o privire la ztot traducător - dar mai întâi stai jos, astfel încât să nu cadă (chiar și ținând cont de faptul că LRA este codul foarte vechi, în ceea ce privește nu schimba de la versiunea 2).

Conversia scripturilor shell în programele Perl

Probabil ați crezut că ar fi un convertor care convertește script-urile shell în programele Perl?

Și nu aici. Mulți oameni întreabă despre un astfel de program, dar problema este că majoritatea a ceea ce face scenariul nu este făcut de acesta. Cele mai multe script-uri de shell-uri își petrec aproape tot timpul pe apelurile programelor individuale pentru extragerea fragmentelor de linie, compararea numerelor, concatenarea fișierelor, ștergerea directoarelor ș.amd. Transformarea unui astfel de script în Perl ar necesita o înțelegere a funcționării fiecăreia dintre utilitățile numite sau trecerea apelului fiecăruia la umerii lui Perl, ceea ce nu oferă absolut nimic.

Prin urmare, cel mai bun lucru pe care îl puteți face,

Uita-te la script-ul shell, determina ce face, și începe totul de la zero, dar deja în Perl. Desigur, puteți petrece în grabă transliterare - plasarea partea principală a script-ul original, sistem () apeluri sau le-a pus în ghilimele spate. Ați putea fi capabil de a înlocui o parte din operațiile comenzi de Perl: de exemplu, pentru a înlocui sistemul (rm / roșu) la deconecteze (fred) sau ciclu pentru shell Perl pe același ciclu. În cele mai multe cazuri, cu toate acestea, veți vedea că LRA este oarecum amintește de programul de conversie scrise în COBOL, C în (aproape aceeași scădere a numărului de caractere din primul, ca o consecință, o creștere a programului de gradul de indescifrabil a textului).

Consultați Anexa A pentru răspuns.
1. Conversia următorului script shell într-un program Perl:

pisică / etc / passwd I

awk -F: '(tipăriți $ 1, $ 6 (' |

în timp ce citiți utilizatorul acasă

newsrc = "http://hardline.ru/download/977/.nevsrc" dacă [-r $ newsrc] atunci

dacă grep -s "comp. \ lang \ .perl \ .announce: '$ newsrc apoi







Articole similare

Trimiteți-le prietenilor: