---
name: "Config::Find::Where"
section: "3pm"
platform: "linux"
package: "libconfig-find-perl"
version: "0.31-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Config::Find::Where"
---

# Config::Find::Where(3pm)

Find locations in the native OS fashion

## NAME

Config::Find::Where - Find locations in the native OS fashion

## SYNOPSIS

```
  use Config::Find::Where;
  my $temp_dir=Config::Find::Where->temp_dir( name => 'my_app',
                                              scope => 'process',
                                              create => 1 );
  my $path=Config::Find::Where->bin_dir( scope => 'app' );
  system $path."/app_helper.exe";
```

## ABSTRACT

Config::Find searches for locations using OS dependent heuristics.

## DESCRIPTION

After releasing Config::Find I found much of its code could be reused to also find other interesting things like temporary directories, the script location, etc.

This module adds a public API to all the hidden functionality.

### OPTIONS

As in Config::Find, all the methods in this package accept a common set of options:

- name =\> "name" or "name/more/names"

  specifies the primary application name used to generate the location paths or to search for them.

- scope =\> "user", "global", "app" or "process"

  \-

- create =\> 1

  creates any nonexistent directory in the path returned

### METHODS

All the methods in this package are class methods (you don't need an object to call them).

- $path=Config::Find::Where-\>temp\_dir(%opts)

  returns a directory path inside a system temporary location. i.e.:

  ```
    Config::Find::Where->temp_dir( name =>'hello/world',
                                   scope => 'process',
                                   create => 1 )
  ```

  returns something similar to

  ```
    '/tmp/jacks/hello/974/world/'
  ```

  on unix like systems and

  ```
    'C:\Windows\Temp\jacks\hello\974\world'
  ```

  on some Windows ones ('jacks' is supposed to be the current user name and '974' the process number).

  The default scope for this method is `"user"`.

- $path=Config::Find::Where-\>bin\_dir(%opts)

  returns a place to find/place binary files. The default scope for this method is `"app"`.

  i.e.

  ```
   Config::Find::Where->bin_dir()
  ```

  returns the path to the directory where binaries are located.

  Note that this directory is not necessarily the same as the one containing the running script. See documentation for `"script_dir"` below.

- $path=Config::Find::Where-\>var\_dir(%opts)

  returns a place to find/place working files.

  The default scope for this method is `"app"`.

- $path = Config::Find::Where-\>lib\_dir(%opts)

  returns a place to find/place library files.

  The default scope for this method is `"app"`.

  For instance:

  ```
    use lib => Config::Find::Where->lib_dir;
  ```

- $path = Config::Find::Where-\>application\_dir(%opts)

  returns the application root directory.

- $name=Config::Find::Where-\>**script\_name()**

  returns the name of the running script without any path information

- $path=Config::Find::Where-\>**script\_full\_path()**

  returns the name of the script as the absolute full path to it.

- $path=Config::Find::Where-\>**script\_dir()**

  returns the name of the directory containing the current script

- Config::Find::Where-\>create\_dir($dir)

  creates directory `$dir` and any needed parents

- Config::Find::Where-\>create\_parent\_dir($file)

  recursively creates all the nonexistent parent directories for `$file`.

- Config::Find::Where-\>helper\_path($file, %opts)

  searches for a script, based on the directories given in `%opts`, which are the same as **bin\_dir()** method.

## BUGS

Some Win32 operating systems are not completely implemented and default to inferior modes, but hey, this is a work in progress!!!

Contributions, bug reports, feedback and any kind of comments are welcome.

## SEE ALSO

Config::Find

## AUTHOR

Salvador Fandiño García, \<sfandino@yahoo.com\>

## CONTRIBUTORS

Barbie, \<barbie@missbarbell.co.uk\> (some bug fixes and documentation)

## COPYRIGHT AND LICENSE

Copyright 2003-2015 by Salvador Fandiño García (sfandino@yahoo.com) Copyright 2015 by Barbie (barbie@missbarbell.co.uk)

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