---
name: "PPIx::EditorTools::ReturnObject"
section: "3pm"
platform: "linux"
package: "libppix-editortools-perl"
version: "0.21-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/PPIx::EditorTools::ReturnObject"
---

# PPIx::EditorTools::ReturnObject(3pm)

Simple object to return values from PPIx::EditorTools

## NAME

PPIx::EditorTools::ReturnObject - Simple object to return values from PPIx::EditorTools

## VERSION

version 0.21

## SYNOPSIS

```
  my $brace = PPIx::EditorTools::FindUnmatchedBrace->new->find(
        code => "package TestPackage;\nsub x { 1;\n"
      );
  my $location = $brace->element->location;
  my $ppi      = $brace->element->ppi;
```

## DESCRIPTION

Retuning a simple `"PPI::Element"` from many of the `"PPIx::EditorTools"` methods often results in the loss of the overall context for that element. `"PPIx::EditorTools::ReturnObject"` provides an object that can be passed around which retains the overall context.

For example, in `"PPIx::EditorTools::FindUnmatchedBrace"` if the unmatched brace were returned by its `"PPI::Structure::Block"` the containing `"PPI::Document"` is likely to go out of scope, thus the `"location"` method no longer returns a valid location (rather it returns undef). Using the `"ReturnObject"` preserves the `"PPI::Document"` and the containing context.

## METHODS

- **new()**

  Constructor which should be used by `"PPIx::EditorTools"`. Accepts the following named parameters:

  - ppi

    A `"PPI::Document"` representing the (possibly modified) code.

  - code

    A string representing the (possibly modified) code.

  - element

    A `"PPI::Element"` or a subclass thereof representing the interesting element.

- ppi

  Accessor to retrieve the `"PPI::Document"`. May create the `"PPI::Document"` from the `$code` string (lazily) if needed.

- code

  Accessor to retrieve the string representation of the code. May be retrieved from the `"PPI::Document"` via the serialize method (lazily) if needed.

## SEE ALSO

`"PPIx::EditorTools"`, App::EditorTools, Padre, and PPI.

## AUTHORS

- •

  Steffen Mueller `"smueller@cpan.org"`

- •

  Mark Grimes `"mgrimes@cpan.org"`

- •

  Ahmad M. Zawawi \<ahmad.zawawi@gmail.com\>

- •

  Gabor Szabo  \<gabor@szabgab.com\>

- •

  Yanick Champoux \<yanick@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2017, 2014, 2012 by The Padre development team as listed in Padre.pm..

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