[rlug] perl chinese

Petru Rațiu rpetre at gmail.com
Wed Jan 23 10:45:41 EET 2019


On Wed, Jan 23, 2019 at 10:33 AM Alex 'CAVE' Cernat <cave at cernat.ro> wrote:

> On 23-Jan-19 8:22 AM, Petru Rațiu wrote:
> > Cu amendamentul ca inca nu mi-am baut cafeaua si n-am testat absolut
> nimic
> > din ce scriu mai jos:
> >
> > - s{lala}{lulu}  e echivalentul lui s/lala/lulu/ dar cu alta forma de
> > quoting,e binecunoscutul operator search-and replace ;
> > - mxs sunt flaguri: m si s impreuna inseamna ca \n e considerat un
> caracter
> > oarecare, x inseamna ca whitespaces nu conteaza si ar ajuta la formatare
> > sau comments (oarecum degeaba in acest context, se pare)
> > - "> [^<]+ \z" din prima parte pare sa vrea sa insemne "> urmat de
> oricate
> > caractere care nu sunt <, dar minim unul, dupa care \z care e un soi de $
> > mai strict (prinde si enter-uri, de ex)
> > ">" din partea a doua e mai simplu :)
> >
> Mersi
>
> nebanuite sunt caile perl-ului si sintaxa lui, uneori ma gandesc ca daca
> dai vreo 3 pumni in tastatura (aleator) ai sanse mari sa se "compileze"
> rezultatul ca program perl
>
> Surprinzator, e relativ putin perl acolo. Chestia cu acoladele ar fi mai
perl specific, si modifierii sunt mai degraba PCRE, care ar fi mai degraba
dialectul de regex cu extensii scrise de perl people (nu vrei sa stii cum
s-ar face chestia aia cu posix regex). Cea mai perl chestie e ce nu se vede
si anume faptul ca regexul scris asa bare opereaza pe variabila implicita
$_ (dar nu cred ca asta era marele mister).



> citisem si eu intre timp de forma asta de s&r, dar e prima data cand o
> intalnesc (chiar si schimbatul / se face destul de rar, macar la
> regexp-uri lumea e conservatoare si prefera sa escapeze / decat sa-l
> inlocuiasca)
>
>
asta cu paranteze e mai perl specific din cate stiu, da' si in engne-urile
clasice poti schimba separatorul, eu unul prefer des ; sau | cand risc sa
am multe "scobitori". As zice ca e chiar nitel mai readable cu acolade, e
putin mai clar care e primul si care e al doilea argument.



> revenind la "> [^<]+ \z", spatiile sunt acolo si match-uiesc in regexp
> exact ca si cum ar fi fost in /, nu ? adica faptul ca foloseste acolade
> nu inseamna nimic, doar chinuie creierul celui care nu e obisnuit cu
> forma asta ...
>
>
Nope, modifierul /x face parserul sa ignore orice whitespace sau
comentarii. in mod normal se face pt. chestii de-astea:

s {
   >    # inchidem tagul anterior
   [^<]+  # nu mai incepe altul
  \z # final de string (nu punem $ ca sa prinda si newlines
} {
  >   # lasam inchiderea de tag pe loc, stergem restul
}msx  # multiline ca sa prinda si enteruri

E nitel overkill dar intelegi ideea. Functioneaza exact la fel. Am dat link
la perldoc perlre, zice pe la inceput partea cu modifiers.

-- 
P.


More information about the RLUG mailing list