| ExtUtils-FindFunctions documentation | Contained in the ExtUtils-FindFunctions distribution. |
ExtUtils::FindFunctions - Find functions in external libraries
Version 0.02
use ExtUtils::FindFunctions;
my @check = qw(pcap_findalldevs pcap_open_dead pcap_setnonblock pcap_lib_version);
my @funcs = have_functions(libs => '-lpcap', funcs => \@check, return_as => 'array');
This module provides the have_functions() function which can be used to
check if given functions are provided by an external library. Its aim is
to be used as an embedded library by Makefile.PL which needs such
facilities. Use the install-extutils-findfunctions command to embed it
in your distribution.
The module exports by default the have_functions() function.
Load the specified libraries and search for the given functions names.
The results are returned as an array or as an hash depending on the
return_as parameter.
Parameters
libs - specify the libraries to load; this argument will be given
to DynaLoader::dl_findfile() funcs - a reference to the list of functions to search return_as - specify the type of the result, either as an array
or as a hash. As an array, only the functions found in the libraries
are returned. As a hash, the keys are the function names and their value
indicates if the function is present or not.Sébastien Aperghis-Tramoni, <sebastien at aperghis.net>
Please report any bugs or feature requests to
bug-extutils-findfunctions at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=ExtUtils-FindFunctions.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc ExtUtils::FindFunctions
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-FindFunctions
Copyright 2006 Sébastien Aperghis-Tramoni, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| ExtUtils-FindFunctions documentation | Contained in the ExtUtils-FindFunctions distribution. |
package ExtUtils::FindFunctions; use strict; use Carp; use DynaLoader; require Exporter; { no strict; $VERSION = '0.02'; @ISA = qw(Exporter); @EXPORT = qw(&have_functions); }
sub have_functions { my %args = @_; my %funcs = (); # check params defined $args{$_} or croak "error: Missing parameter '$_'.\n" for qw(libs funcs return_as); $args{return_as} ||= 'array'; $args{return_as} =~ /^(?:array|hash)$/ or croak "error: Incorrect value for parameter 'return_as'.\n"; my @libs = ref $args{libs} eq '' ? $args{libs} : ref $args{libs} eq 'ARRAY' ? @{$args{libs}} : croak "error: Incorrect argument for parameter 'libs'.\n"; # search for functions for my $lib (@libs) { my @paths = DynaLoader::dl_findfile($lib); for my $path (@paths) { my $libref = DynaLoader::dl_load_file($path); for my $func (@{$args{funcs}}) { my $symref = DynaLoader::dl_find_symbol($libref, $func); $funcs{$func} = ! ! defined $symref; } DynaLoader::dl_unload_file($libref); } } return $args{return_as} eq 'hash' ? %funcs : grep { $funcs{$_} } sort keys %funcs; }
1; # End of ExtUtils::FindFunctions