Lucrăm cu fișiere în perl
Faptul că un fișier de a scrie eu sper este inutil, dar cred că trebuie să se gândească la ceea ce se poate face cu ele, după cum se poate observa din titlul articolului, în Perl. Ei bine, să începem.
Acest articol va discuta:
Care este mânerele de fișier, și ce mănâncă
Accesul la fișiere folosind tratări de fișiere, care sunt ca să spunem așa un fișier sinonim. Ele nu sunt variabile și, prin urmare, nu pot fi atribuite în mod direct la o altă variabilă sau a trecut la funcții (pentru acest lucru este necesar, spun ei, du-te alt mod).
Există mânere standard de fișiere Perlovskiy. Acestea se numesc STDIN (intrarea standard), STDOUT (output standard) și STDERR (eroare standard). De exemplu, parametrii de script transmise de matriță este prin STDIN (furnizat folosind metoda POST).
Dacă aveți nevoie pentru a crea o copie a unui fișier manipulator (nu un fișier, ci numai manipulatorul în care este accesat un fișier), atunci puteți utiliza deschis (mai multe despre asta mai târziu).
Despre atribuirea unui tratări de fișiere variabile:
Și în final, aș spune că un filehandle în Perl nu sunt folosite numai pentru comunicarea cu fișierul de fapt. Acestea pot fi asociate cu orice proces, soclu, etc. Dar acest lucru este dincolo de domeniul de aplicare al articolului.
Manipularea de fișiere
Deschiderea unui fișier este efectuată de deschis.
Vom înțelege. Prezentăm trei parametri: FFF - numele fișierului manipulatorului (vă întrebați), „>“ modul de acces și „fisier.txt“ - numele fișierului pe care doriți. Există trei moduri de bază: „>“ - Record "<"- чтение, ">> „- adăugarea la dosar.
Există, de asemenea, o funcție sysopen. Lucrul cu ea nu este cu mult mai dificilă decât cu deschis, dar cu ea puteți lua mai în detaliu „tell“ despre intențiile tale în sistem (de exemplu, ceea ce doriți să faceți cu fișierul).
În sysopen trei parametri necesari și unul opțional.
FH - de fapt, un filehandle, $ nume - numele fișierului în forma sa pură (fără „>“ etc.). Dolari steaguri a pus numărul obținut prin combinarea constantele de mai jos descrise OR (|):
read-only
Ștergeți conținutul atunci când deschiderea
Acest lucru nu este cu siguranță o listă exhaustivă, dar aici sunt cele mai constante esențiale și utilizate în mod obișnuit.
În cele din urmă, $ param. Acest parametru specifică masca de acces de fișiere și scrise în octal. De obicei, valoarea 0666 (valoarea implicită, adică, în cazul în care param $ omise), sau 0777. Prima valoare este utilizată pentru fișierele regulate, al doilea este pentru directoarele și fișierele executabile.
Un exemplu de deschidere a unui fișier pentru scriere (dacă nu a fost găsit - creat):
Scrierea într-un fișier de a face funcția de imprimare.
Aici, FFF - numele unui fișier manipulator și un șir citat - textul pe care dorim să scrie într-un fișier asociat cu FFF.
Dacă nu ați exista înainte de a încerca să deschidă fișierul, funcția este deschis va fi, și în cazul în care fișierul a fost, și nu a fost gol, după funcția de imprimare de mai sus, nu a mai rămas nimic din informațiile anterioare, și este înregistrat va fi ca un nonsens ca acolo am scris .
După cum sa menționat deja, există trei manipulatorului fișier standard, iar manipulatorul este coborâtă cu funcția de imprimare fișier va duce ieșire la stdout (același lucru este valabil și pentru funcțiile printf și scrie). Pentru a schimba direcția de ieșire în Perl oferă funcția de selectare (deși nu numai în acest scop). exemplu:
Închideți aproape funcția de fișier.
Principiul curat după ei grefat toate din copilărie. Să nu uităm că, în programarea, deși la sfârșitul procesului, în care a fost deschis dosarul, fișierul este închis automat.
În primul rând pentru ce? Și pentru a se asigura că, dacă mai multe procese în același timp doriți să obțineți acces la un fișier, și scrie, și totuși doriți să scrie ceva (un coșmar), atunci imaginați-vă ce ar fi fost, dacă nu acest mecanism de blocare minunat. Acesta permite, aproximativ, pentru a pune în aplicare procese. Face acest lucru:
Despre Deblocare: încuietori sunt eliberate în mod automat la sfârșitul procesului, cauzată de script-ul curent, sau atunci când închideți manipulatorul fișierul care „legat“ într-un fișier blocat. Dacă trage manual de blocare, să fie atent - permiteți un alt proces de a face cu nu este închis fișierul ce vrea (NOTĂ!)! Consecințele pot fi, pentru a pune-l ușor, neplăcut, și aproximativ vorbind - imprevizibilă (neașteptată pentru tine).
Lucrul cu siruri de caractere în fișierul
Deci, cum exact acele fișiere care conțin informații șir de cel mai mare interes pentru a face, de fapt, omul, iar acum merge este despre ei.
Pentru a citi linii dintr-un fișier folosind un manipulator de fișier „livrat“ în <>.
Dacă nu se specifică altfel, în acest ciclu, variabila standard de „$ _“, iar numărul liniei este înregistrat în „$.“. De la capătul liniei este indicat prin caractere speciale, cum ar fi „\ n“, pentru a obține șirul în sine (fără o astfel de „coadă“), este necesar să trunchia funcția chomp.
Puteți citi siruri de caractere în matrice:
Pentru a muta fișierul utilizează funcții spun și să caute.
spune functie are ca parametru un filehandle, și să caute ia trei parametri. Origine - filehandle, al doilea - offset în octeți, al treilea - direcția de deplasare. Există trei direcții de deplasare: 0 - de la începutul fișierului, 1 - din poziția curentă, 2 - de la sfârșitul fișierului.
Nu putem spune că acest lucru este tot ceea ce noi oferim Perl pentru lucrul cu fișiere. Din fericire, voi avea timp pentru ceva pentru a scrie despre cum să lucreze cu cataloage, subtilitate atunci când se ocupă cu fișiere binare, abordare orientată spre obiect fișierele și gestionarea conținutului.
Aș fi foarte recunoscător pentru eventualele erori sau inexactități din acest articol.