B::Utils::OP.3pm

Langue: en

Autres versions - même langue

Version: 2008-11-13 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

B::Utils::OP - op related utility functions for perl

SYNOPSIS

   use B::Utils::OP qw(parent_op return_op);
   sub foo {
     my $pop = parent_op(0);
     my $rop = return_op(0);
   }
 
 

DESCRIPTION

   sub foo {
     dothis(1);
     find_things();
     return;
   }
 
 

has the following optree:

  d  <1> leavesub[1 ref] K/REFC,1 ->(end)
  -     <@> lineseq KP ->d
  1        <;> nextstate(main -371 bah.pl:8) v/2 ->2
  5        <1> entersub[t2] vKS/TARG,3 ->6
  -           <1> ex-list K ->5
  2              <0> pushmark s ->3
  3              <$> const[IV 1] sM ->4
  -              <1> ex-rv2cv sK/3 ->-
  4                 <#> gv[*dothis] s ->5
  6        <;> nextstate(main -371 bah.pl:9) v/2 ->7
 
  9        <1> entersub[t4] vKS/TARG,3 ->a
  -           <1> ex-list K ->9
  7              <0> pushmark s ->8
  -              <1> ex-rv2cv sK/3 ->-
  8                 <#> gv[*find_things] s/EARLYCV ->9
 
  a        <;> nextstate(main -371 bah.pl:10) v/2 ->b
  c        <@> return K ->d
  b           <0> pushmark s ->c
 
 

The "find_things" in "foo" is called in the "entersub" in #9. If you call "parent_op" function with level 0, you get the "nextstate" op that is before the entersub, which is #6. And "return_op" gives you the next op that the caller is returning to, in this case, the "nextstate" in #a.

EXPORTED PERL FUNCTIONS

parent_op($lv)
In runtime, returns the B::OP object whose next is the "entersub" of the current context up level $lv
return_op($lv)
In runtime, returns the B::OP object that the current context is returning to at level $lv

B::CV METHODS

$cv->NEW_with_start($root, $start)
Clone the $cv but with different $root and $start

AUTHORS

Chia-liang Kao <clkao@clkao.org> Copyright 2008 by Chia-liang Kao

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See <http://www.perl.com/perl/misc/Artistic.html>