2015-05-23 25 views
15

Perl ayrıştırıcısı manipülasyon ile oynamak için arıyorum. İnsanların kullandığı çeşitli B::Hooks modüllerine benziyor. Merak ediyorum: hayır XS deneyimi (henüz) olan biri için başlatmayaB :: Perl ayrıştırıcısını değiştirmek için kancalar kullanın

  1. En yer. İlgili blog gönderileri var mı? Örneğin yeni bir operatöre oluşturmak dahil olacağını ne kadar iş

  2. :

    $a~>one~>two~>three

~>-> gibi çalışacak ama undef çağırıyoruz deneyin ve olur bunun yerine basitçe olmaz LHS'ye undef geri dönün.

Bir kaynak süzgeci çalışmasına rağmen - ayrıştırıcıyı daha derin bir düzeyde nasıl işleyebileceğinizi görmek istiyorum.

+4

Bu ilginç bir özellik gibi görünüyor. :) –

+0

Bunu yaparken rahatsız etmeyin diye düşündüm eğer ($ dom-> at ('div') -> at ('h1')) {'in Mojo :: DOM ve çağrılmayan undefined becasue' div "yoktu" :) – LLFourn

+0

Henüz bu anlamadım ama bu umut verici görünüyor: https://metacpan.org/pod/B::Utils – LLFourn

cevap

1

İnfix operatörlerini (işleçleri operatörden önce ve sonra olan operatörler), daha az sembolik olanları (adlandırılmış işleçlerin aksine) ekleyebileceğinize inanmıyorum, ancak yöntem çağrılarını değiştiren bir op denetleyicisi yazabilirsiniz. . Bu, ->foo'un farklı davranmasına neden olabileceğiniz anlamına gelir. Modülünüzü bir pragma olarak yazarak, modülünüzün etkisini bir sözcük kapsamı ile sınırlayabilirsiniz (ör. { use mypragma; ...}).