---
name: "Path::FindDev::Object"
section: "3pm"
platform: "linux"
package: "perl-path-finddev"
version: "0.5.3-10"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Path::FindDev::Object"
---

# Path::FindDev::Object(3pm)

Object oriented guts to FindDev

## NAME

Path::FindDev::Object - Object oriented guts to FindDev

## VERSION

version v0.5.3

## SYNOPSIS

```
    require Path::FindDev::Object;
    my $finder = Path::FindDev::Object->new();
    my $dev = $finder->find_dev($path);
```

## DESCRIPTION

This module implements the innards of `"Path::FindDev"`, and is only recommended for use if the Exporter `"API"` is insufficient for your needs.

## METHODS

### "has\_set"

Determines if the `"set"` attribute exists

### "has\_uplevel\_max"

Determines if the `"uplevel_max"` attribute is provided.

### "find\_dev"

Find a parent at, or above `$OtherPath` that resembles a `"devel"` directory.

```
    my $path = $object->find_dev( $OtherPath );
```

## ATTRIBUTES

### "set"

**(optional)**

The `"Path::IsDev::HeuristicSet"` subclass for your desired Heuristics.

### "uplevel\_max"

If provided, limits the number of `"uplevel"` iterations done.

( that is, limits the number of times it will step up the hierarchy )

### "nest\_retry"

The number of `"dev"` directories to `"ignore"` in the hierarchy.

This is provided in the event you have a `"dev"` directory within a `"dev"` directory, and you wish to resolve an outer directory instead of an inner one.

By default, this is `0`, or "stop at the first `"dev"` directory"

### "isdev"

The `"Path::IsDev"` object that checks nodes for `"dev"`-ishness.

## PRIVATE METHODS

### "\_instance\_id"

An opportunistic sequence number for help with debug messages.

Note: This is not guaranteed to be unique per instance, only guaranteed to be constant within the life of the object.

Based on `"refaddr"`, and giving out new ids when new `"refaddr"`'s are seen.

```
    my $id = $object->_instance_id;
```

### "BUILD"

`"BUILD"` is an implementation detail of `"Moo"`/`"Moose"`.

This module hooks `"BUILD"` to give a self report of the object to `*STDERR` after `"->new"` when under `$DEBUG`

### "\_debug"

The debugger callback.

```
    export PATH_FINDDEV_DEBUG=1
```

to get debug info.

```
    $object->_debug($message);
```

### "\_error"

The error reporting callback.

```
    $object->_error($message);
```

### "\_step"

Inner code path of tree walking.

```
    my ($dev_levels, $uplevels ) = (0,0);
    my $result = $object->_step( path($somepath), \$dev_levels, \$uplevels );
    $result->{type} eq 'stop'   # if flow control should end
    $result->{type} eq 'next'   # if flow control should ascend to parent
    $result->{type} eq 'found'  # if flow control has found the "final" dev directory
```

## AUTHOR

Kent Fredric \<kentnl@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Kent Fredric \<kentfredric@gmail.com\>.

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