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 throw errors will throw them only the first time they're called. To start over (after, say, someone has installed libiconv) construct a new App::Info::Lib::Iconv object to aggregate new metadata.

CONSTRUCTOR

new

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

Returns an App::Info::Lib::Iconv object.

When called, new() searches the file system for the iconv application. If iconv is found, libiconv will be assumed to be installed. Otherwise, most of the object methods will return undef.

App::Info::Lib::Iconv searches for iconv along your path, as defined by File::Spec-path>. Failing that, it searches the following directories:

/usr/local/bin
/usr/bin
/bin
/sw/bin
/usr/local/sbin
/usr/sbin/
/sbin
/sw/sbin

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 applicatio, 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 parses the version number from the iconv.h file, if it exists. Emits a warning if libiconv is installed but iconv.h could not be found or the version number could not be parsed.

major_version

my $major_version = $iconv->major_version;

Returns the Iconv major version number. App::Info::Lib::Iconv parses the version number from the iconv.h file, if it exists. For example, if version() returns "1.95.2", then this method returns "1". See the version method for a list of possible errors.

minor_version

my $minor_version = $iconv->minor_version;

Returns the Iconv minor version number. App::Info::Lib::Iconv parses the version number from the iconv.h file, if it exists. For example, if version() returns "1.95.2", then this method returns "95". See the version method for a list of possible errors.

patch_version

my $patch_version = $iconv->patch_version;

Libiconv has no patch number in its version number, so this method will always return false.

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().

inc_dir

my $inc_dir = $iconv->inc_dir;

Returns the directory path in which the file iconv.h was found. Throws an error if iconv.h could not be found. App::Info::Lib::Iconv searches for iconv.h in the following directories:

/usr/local/include
/usr/include
/sw/include

lib_dir

my $lib_dir = $iconv->lib_dir;

Returns the directory path in which a libiconv library was found. Throws an error if no libiconv library could be found. App::Info::Lib::Iconv searches for these files:

libiconv.so
libiconv.so.0
libiconv.so.0.0.1
libiconv.dylib
libiconv.2.dylib
libiconv.2.0.4.dylib
libiconv.a
libiconv.la

...in these directories:

/usr/local/lib
/usr/lib
/sw/lib

so_lib_dir

my $so_lib_dir = $iconv->so_lib_dir;

Returns the directory path in which a libiconv shared object library was found. Throws an error if no libiconv shared object library could be found. App::Info::Lib::Iconv searches for these files:

libiconv.so
libiconv.so.0
libiconv.so.0.0.1
libiconv.dylib
libiconv.2.dylib
libiconv.2.0.4.dylib

...in these directories:

/usr/local/lib
/usr/lib
/sw/lib

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.

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.

BUGS

Feel free to drop me a line if you discover any bugs. Patches welcome.

AUTHOR

David Wheeler <david@wheeler.net> based on code by Sam Tregar <sam@tregar.com>.

SEE ALSO

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

COPYRIGHT AND LICENSE

Copyright (c) 2002, David Wheeler. All Rights Reserved.

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