---
name: "B::Utils::OP"
section: "3pm"
platform: "linux"
package: "libb-utils-perl"
version: "0.27-3+b3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/B::Utils::OP"
---

# B::Utils::OP(3pm)

op related utility functions for perl

## NAME

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

## VERSION

version 0.27

## 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

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\>
