To golfowy jednolinijkowy. Flaga -e
oznacza wykonanie reszty linii poleceń jako programu. -l
umożliwia automatyczne przetwarzanie końca linii.
Część <.* *>
to glob zawierający dwa wzory do rozwinięcia: .*
i *
.
Ta część
(q=not =)
jest lista zawierająca jedną wartość - łańcuch "nie". q=...=
to alternatywny ogranicznik łańcucha, najwyraźniej używany, ponieważ pojedynczy cytat jest używany do zacytowania jednolinijki.
Część [...]
jest indeksem dolnym do tej listy. Wartość indeksu będzie albo 0 (wartość „nie ”) lub 1 (nic, co drukuje jako ciąg pusty), w zależności od wyniku tego porównania:
2 == (()=<.* *>)
Dużo się tu dzieje. Porównanie sprawdza, czy glob zwrócił listę dokładnie dwóch elementów (z założeniem .
i ..
), ale jak to jest trudne. Wewnętrzne nawiasy oznaczają pustą listę. Przypisanie do tej listy powoduje umieszczenie kontekstu listy globu w taki sposób, aby zwracała wszystkie pliki w katalogu. (W kontekście skalarnym zachowywałby się jak iterator i zwracałby tylko po jednym naraz.) Sam przypisanie jest oceniane w kontekście skalarnym (znajdującym się po prawej stronie porównania), a zatem zwraca liczbę przypisanych elementów.
Wiodącym +
jest uniemożliwienie Perlowi analizowania listy jako argumentów dla print
.Końcowy .empty
łączy ciąg "pusty" z tym, co wyszło z listy (tj. "Nie " lub pusty ciąg znaków).
Zapraszam do edycji tagów dla czegoś bardziej odpowiedniego – dsm
Haha, jesteś taki zabawny! Tarzam się po podłodze śmiejąc się. Zadzwoniłeś do linii perlowej! HAHAHAHAHAHAHAHAHAHAHAHAA! – jrockway
Dobre zgłoszenie do "zaciemnienia roku". Lubię Perla, ale bardziej lubię komentarze w kodzie Perla. – Boldewyn