---
name: "App::Info::Lib::Iconv"
section: "3pm"
platform: "linux"
package: "libapp-info-perl"
version: "0.57-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/App::Info::Lib::Iconv"
---

# App::Info::Lib::Iconv(3pm)

Information about libiconv

## NAME

App::Info::Lib::Iconv - Information about libiconv

## SYNOPSIS

```
  use App::Info::Lib::Iconv;
  my $iconv = App::Info::Lib::Iconv->new;
  if ($iconv->installed) {
      print "App name: ", $iconv->name, "\n";
      print "Version:  ", $iconv->version, "\n";
      print "Bin dir:  ", $iconv->bin_dir, "\n";
  } else {
      print "libiconv is not installed. :-(\n";
  }
```

## DESCRIPTION

App::Info::Lib::Iconv supplies information about the libiconv library installed on the local system. It implements all of the methods defined by App::Info::Lib. Methods that trigger events will trigger them only the first time they're called (See App::Info for documentation on handling events). To start over (after, say, someone has installed libiconv) construct a new App::Info::Lib::Iconv object to aggregate new meta data.

Some of the methods trigger the same events. This is due to cross-calling of shared subroutines. However, any one event should be triggered no more than once. For example, although the info event "Searching for 'iconv.h'" is documented for the methods `"version()"`, `"major_version()"`, and `"minor_version()"`, rest assured that it will only be triggered once, by whichever of those four methods is called first.

## INTERFACE

### Constructor

*new*

```
  my $iconv = App::Info::Lib::Iconv->new(@params);
```

Returns an App::Info::Lib::Iconv object. See App::Info for a complete description of argument parameters.

When called, `"new()"` searches the the list of directories returned by the `"search_bin_dirs()"` method for an executable file with a name returned by the `"search_exe_names()"` method. If the executable is found, libiconv will be assumed to be installed. Otherwise, most of the object methods will return `"undef"`.

**Events:**

- info

  Searching for iconv

- unknown

  Path to iconv executable?

- confirm

  Path to iconv executable?

### Class Method

*key\_name*

```
  my $key_name = App::Info::Lib::Iconv->key_name;
```

Returns the unique key name that describes this class. The value returned is the string "libiconv".

### Object Methods

*installed*

```
  print "libiconv is ", ($iconv->installed ? '' : 'not '),
    "installed.\n";
```

Returns true if libiconv is installed, and false if it is not. App::Info::Lib::Iconv determines whether libiconv is installed based on the presence or absence of the *iconv* application, as found when `"new()"` constructed the object. If libiconv does not appear to be installed, then most of the other object methods will return empty values.

*name*

```
  my $name = $iconv->name;
```

Returns the name of the application. In this case, `"name()"` simply returns the string "libiconv".

*version*

```
  my $version = $iconv->version;
```

Returns the full version number for libiconv. App::Info::Lib::Iconv attempts to parse the version number from the *iconv.h* file, if it exists.

**Events:**

- info

  Searching for 'iconv.h'

  Searching for include directory

- error

  Cannot find include directory

  Cannot find 'iconv.h'

  Cannot parse version number from file 'iconv.h'

- unknown

  Enter a valid libiconv include directory

  Enter a valid libiconv version number

*major\_version*

```
  my $major_version = $iconv->major_version;
```

Returns the libiconv major version number. App::Info::Lib::Iconv attempts to parse the version number from the *iconv.h* file, if it exists. For example, if `"version()"` returns "1.7", then this method returns "1".

**Events:**

- info

  Searching for 'iconv.h'

  Searching for include directory

- error

  Cannot find include directory

  Cannot find 'iconv.h'

  Cannot parse version number from file 'iconv.h'

- unknown

  Enter a valid libiconv include directory

  Enter a valid libiconv version number

*minor\_version*

```
  my $minor_version = $iconv->minor_version;
```

Returns the libiconv minor version number. App::Info::Lib::Iconv attempts to parse the version number from the *iconv.h* file, if it exists. For example, if `"version()"` returns "1.7", then this method returns "7".

**Events:**

- info

  Searching for 'iconv.h'

  Searching for include directory

- error

  Cannot find include directory

  Cannot find 'iconv.h'

  Cannot parse version number from file 'iconv.h'

- unknown

  Enter a valid libiconv include directory

  Enter a valid libiconv version number

*patch\_version*

```
  my $patch_version = $iconv->patch_version;
```

Since libiconv has no patch number in its version number, this method will always return false.

*executable*

```
  my $executable = $iconv->executable;
```

Returns the path to the Iconv executable, which will be defined by one of the names returned by `"search_exe_names()"`. The executable is searched for in `"new()"`, so there are no events for this method.

*bin\_dir*

```
  my $bin_dir = $iconv->bin_dir;
```

Returns the path of the directory in which the *iconv* application was found when the object was constructed by `"new()"`.

**Events:**

- info

  Searching for bin directory

- error

  Cannot find bin directory

- unknown

  Enter a valid libiconv bin directory

*inc\_dir*

```
  my $inc_dir = $iconv->inc_dir;
```

Returns the directory path in which the file *iconv.h* was found. App::Info::Lib::Iconv searches for *iconv.h* in the following directories:

- /usr/local/include

  - /usr/include

  - /sw/include

  **Events:**

- info

  Searching for include directory

- error

  Cannot find include directory

- unknown

  Enter a valid libiconv include directory

*lib\_dir*

```
  my $lib_dir = $iconv->lib_dir;
```

Returns the directory path in which a libiconv library was found. The search looks for a file with a name returned by `"search_lib_names()"` in a directory returned by `"search_lib_dirs()"`.

**Events:**

- info

  Searching for library directory

- error

  Cannot find library directory

- unknown

  Enter a valid libiconv library directory

*so\_lib\_dir*

```
  my $so_lib_dir = $iconv->so_lib_dir;
```

Returns the directory path in which a libiconv shared object library was found. The search looks for a file with a name returned by `"search_so_lib_names()"` in a directory returned by `"search_lib_dirs()"`.

Returns the directory path in which a libiconv shared object library was found. App::Info::Lib::Iconv searches for these files:

\<Events:\>

- info

  Searching for shared object library directory

- error

  Cannot find shared object library directory

- unknown

  Enter a valid libiconv shared object library directory

*home\_url*

```
  my $home_url = $iconv->home_url;
```

Returns the libiconv home page URL.

*download\_url*

```
  my $download_url = $iconv->download_url;
```

Returns the libiconv download URL.

*search\_exe\_names*

```
  my @search_exe_names = $iconv->search_exe_names;
```

Returns a list of possible names for the Iconv executable. By default, the only name returned is *iconv* (*iconv.exe* on Win32).

*search\_bin\_dirs*

```
  my @search_bin_dirs = $iconv->search_bin_dirs;
```

Returns a list of possible directories in which to search an executable. Used by the `"new()"` constructor to find an executable to execute and collect application info. The found directory will also be returned by the `"bin_dir"` method. By default, the directories returned are those in your path, followed by these:

- */usr/local/bin*

  - */usr/bin*

  - */bin*

  - */sw/bin*

  - */usr/local/sbin*

  - */usr/sbin*

  - */sbin*

  - */sw/sbin*

  *search\_lib\_names*

```
  my @seach_lib_names = $self->search_lib_nams
```

Returns a list of possible names for library files. Used by `"lib_dir()"` to search for library files. By default, the list is:

- libiconv3.a

  - libiconv3.la

  - libiconv3.so

  - libiconv3.so.0

  - libiconv3.so.0.0.1

  - libiconv3.dylib

  - libiconv3.0.dylib

  - libiconv3.0.0.1.dylib

  - libiconv.a

  - libiconv.la

  - libiconv.so

  - libiconv.so.0

  - libiconv.so.0.0.1

  - libiconv.dylib

  - libiconv.2.dylib

  - libiconv.2.0.4.dylib

  - libiconv.0.dylib

  - libiconv.0.0.1.dylib

  *search\_so\_lib\_names*

```
  my @seach_so_lib_names = $self->search_so_lib_nams
```

Returns a list of possible names for shared object library files. Used by `"so_lib_dir()"` to search for library files. By default, the list is:

- libiconv3.so

  - libiconv3.so.0

  - libiconv3.so.0.0.1

  - libiconv3.dylib

  - libiconv3.0.dylib

  - libiconv3.0.0.1.dylib

  - libiconv.so

  - libiconv.so.0

  - libiconv.so.0.0.1

  - libiconv.dylib

  - libiconv.0.dylib

  - libiconv.0.0.1.dylib

  *search\_lib\_dirs*

```
  my @search_lib_dirs = $iconv->search_lib_dirs;
```

Returns a list of possible directories in which to search for libraries. By default, it returns all of the paths in the `"libsdirs"` and `"loclibpth"` attributes defined by the Perl Config module -- plus */sw/lib* (in support of all you Fink users out there).

*search\_inc\_names*

```
  my @search_inc_names = $iconv->search_inc_names;
```

Returns a list of include file names to search for. Used by `"inc_dir()"` to search for an include file. By default, the only name returned is *iconv.h*.

*search\_inc\_dirs*

```
  my @search_inc_dirs = $iconv->search_inc_dirs;
```

Returns a list of possible directories in which to search for include files. Used by `"inc_dir()"` to search for an include file. By default, the directories are:

- /usr/local/include

  - /usr/include

  - /sw/include

  ## KNOWN ISSUES

This is a pretty simple class. It's possible that there are more directories that ought to be searched for libraries and includes.

## TO DO

Improve this class by borrowing code from Matt Seargent's AxKit *Makefil.PL*.

## SUPPORT

This module is stored in an open GitHub repository \<http://github.com/theory/app-info/\>. Feel free to fork and contribute!

Please file bug reports via GitHub Issues \<http://github.com/theory/app-info/issues/\> or by sending mail to bug-App-Info@rt.cpan.org \<mailto:bug-App-Info@rt.cpan.org\>.

## AUTHOR

David E. Wheeler \<david@justatheory.com\> based on code by Sam Tregar \<sam@tregar.com\>.

## SEE ALSO

App::Info, App::Info::Lib, Text::Iconv

## COPYRIGHT AND LICENSE

Copyright (c) 2002-2011, David E. Wheeler. Some Rights Reserved.

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