Padwalker

Speel met de lexicale variabelen van andere mensen
Download nu

Padwalker Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Robin Houston
  • Uitgever website:
  • http://search.cpan.org/~robin/

Padwalker Tags


Padwalker Beschrijving

Padwalker is een Perl-module waarmee je (en zelfs verandert!) Lexicale variabelen in elke subroutine die je hebt gebeld. Het toont alleen die variabelen die in het kader van het punt van de call.padwalker zijn, is bijzonder nuttig voor debugging. Het wordt zelfs gebruikt door de ingebouwde debugger van Perl. (Het kan natuurlijk ook voor het kwaad worden gebruikt.) Ik zou niet aanraden Padwalker rechtstreeks in productiecode te gebruiken, maar het is uw oproep. Sommige van de modules die Padwalker intern gebruiken, zijn er zeker veilig voor en nuttig in productie.PEEK_MY LEVERPEEK_OUR NIVEAU Het niveau dat argument wordt geïnterpreteerd, net als het argument voor beller. Dus PEEK_MY (0) retourneert een verwijzing naar een hash van alle mijn variabelen die momenteel in werking zijn; PEEEK_MY (1) retourneert een verwijzing naar een hash van alle mijn variabelen die in omvang zijn op het punt waarop de huidige sub werd gebeld, enzovoort. Peek_our werkt op dezelfde manier, behalve dat het de onze variabelen in plaats van de mijn variabelen vermeldt. De HASH associeert elke variabele naam met een verwijzing naar zijn waarde. De variabele namen omvatten de SIGIL, dus de variabele $ x is vertegenwoordigd door de string '$ x'. Bijvoorbeeld: mijn $ x = 12; mijn $ H = PEEK_MY (0); $ {$ H -> {'$ x'}} ++; Print $ X; # prints 13 of een complexer voorbeeld: sub increment_my_x {mijn $ H = PEEK_MY (1); $ {$ H -> {'$ x'}} ++; } mijn $ x = 5; increment_my_x; Print $ X; # PRINTS 6PEEK_SUB SUB DE PEEK_SUB-routine neemt een CODEREF als het argument en retourneert een hash van de mijn variabelen die in die sub worden gebruikt. De waarden zullen meestal ongedefinieerd zijn, tenzij de sub in gebruik is (d.w.z. in de call-chain) op het moment. Aan de andere kant: mijn $ x = "Hallo!"; mijn $ r = PEEK_SUB (sub {$ x}) -> {'$ x'}; Print "$$ r \ n"; # prints 'hallo!' Als de sub verschillende mijn variabelen met dezelfde naam definieert, krijgt u de laatste. Ik ken geen gebruik voor PEEEK_SUB dat niet wordt verbroken als gevolg hiervan, en het zal waarschijnlijk worden afgeschreven in een toekomstige versie ten gunste van sommige alternatieve interface.Clososed_over sub closed_over is vergelijkbaar met PEEK_SUB, behalve dat het alleen Geeft een vermelding van de mijn variabelen die in de subroutine worden gebruikt, maar buiten gedefinieerd: met andere woorden, de variabelen die het sluit. Dit heeft redelijk gebruik: zie gegevens :: Dump :: Streamer, bijvoorbeeld (een toekomstige versie hiervan kan in feite closed_over) gebruiken. Set_CLosed_over Sub, Hash_ref Set_Clososed_Over stelt de padvariabelen die door de subroutine worden gesloten, opnieuw toewijzen. Het tweede argument is een hash van referenties, net zoals die terugkeerde van closed_over.var_name niveau, var_refvar_name sub, var_ref var_name (sub, var_ref) retourneert de naam van de variabele waarnaar wordt verwezen door Var_ref, op voorwaarde dat het een mijn variabele wordt gebruikt in de sub. De subparameter kan een code-referentie of een getal zijn. Als het een nummer is, wordt het op dezelfde manier behandeld als het argument voor Peek_my. Bijvoorbeeld mijn $ foo; Print Var_Name (0, \ $ foo); # Prints '$ foo' sub my_name {return var_name (1, shift); } PRINT MY_NAME (\ $ FOO); # DitteSynopsis Gebruik Padwalker QW (Peek_My Peek_our Peek_Sub Closed_over); ... de startpagina van het product


Padwalker Gerelateerde software