2013-07-09 15 views
11

Basta leggere questa pagina: https://github.com/book/perlsecret/blob/master/lib/perlsecret.pod, ed è stato davvero sorpreso con le affermazioni del tipo:Gli operatori Perl sono "scoperti" e non progettati?

Discovered by Philippe Bruhat, 2012. 
Discovered by Abigail, 2010. (Alternate nickname: "grappling hook") 
Discovered by Rafaël Garcia-Suarez, 2009. 
Discovered by Philippe Bruhat, 2007. 

e così via ...

Gli operatori di cui sopra sono SCOPERTO, in modo che non sono intenzionali di perl-design?

Quello significa che qui è la possibilità di perl davanzale hanno qualche casuale carattere sequenze ciò al fine giusto fare qualcosa di utile come il "gestore" ()x!!?

È qui qualsiasi altra lingua che cosa ha rilevato operatos?

+1

C, C++, Perl e altri hanno [vai all'operatore] (http://stackoverflow.com/q/1642028/168657) – mob

risposta

13

Dalla pagina si è collegato:

Sono come gli operatori, nel senso che questi Perl programmatori vedono loro abbastanza spesso di riconoscerli senza pensare a loro parti più piccole, ed eventualmente aggiungere alla la loro cassetta degli attrezzi. E sono come segreti, nel senso che devono essere scoperti dal loro utente futuro (o essere trasmessi da un altro programmatore), perché non sono documentati esplicitamente .

Cioè, non sono proprio i loro operatori, ma sono costituiti da operatori più piccoli composti per fare qualcosa insieme.

Ad esempio, l'operatore "venere" (0+ o +0) numifica l'oggetto alla sua sinistra o destra. Questo è ciò che aggiunge zero in qualsiasi forma, operatore "segreto" o meno.

+11

"Gli operatori segreti non sono in realtà segreti e non sono in realtà gli operatori Il parser perl non li riconosce in modo specifico e nessuno sta cercando di nasconderli da te. " –

4

Perl ha un gruppo di operatori che fanno cose speciali, così come personaggi che fanno cose speciali quando interpretati in un contesto specifico. Piuttosto che questi sono effettivi "operatori" (cioè, non esplicitamente riconosciuti dal parser Perl), pensateli come combinazioni di determinate funzioni/operazioni. Ad esempio ()X!!, che è noto come operatore "Enterprise", è costituito da () che è un elenco, seguito da x, che è un operatore di ripetizione, seguito da !! (l'operatore "bang bang"), che esegue una conversione booleana. Questo è uno dei motivi per cui Perl è così espressivo.

Problemi correlati