NAME Win32::Interfaces - Win32 Network Adapter Interfaces SYNOPSIS use Win32::Interfaces; my $interface = Win32::Interfaces->new('Wireless Network Connection'); printf "Name: %s\n", $interface->name; printf "MAC: %s\n", $interface->mac; printf "IPv4: %s\n", $interface->ipv4; DESCRIPTION Win32::Interfaces is a module to retrieve Windows interface adapter information (such as IP[v6] addresses, gateways, MAC, etc...). It is implemented with system functions such as "wmic", "netsh" and "arp". A better approach may be to use XS with "GetAdaptersAddresses()" and parse the "IP_ADAPTER_ADDRESSES" structure. Alas, that is proving difficult to do. This module was developed since I couldn't find an existing CPAN module that handled this information specifically for Windows, let alone find Win32 support in the many interface modules already on CPAN (see SEE ALSO). The existing CPAN interface modules also used different APIs so finding a common interface for both Windows and *nix with all the features was not possible. This modules attempts to provide many of the API calls from *nix interface modules specifically to Win32. [...] #### use strict; use warnings; use Win32::Interfaces; # Assumes the existence of "Local Area Connection" interface as default my $W32interfaces = Win32::Interfaces->new(); my @interfaces = $W32interfaces->interfaces(); for my $if (@interfaces) { my $interface = $W32interfaces->interface($if); if (!defined($interface)) { print Win32::Interfaces->error . "\n" } else { print "\n"; printf "Name: %s\n", $interface->name if $interface->name; printf "Description: %s\n", $interface->description if $interface->description; printf "Adapter: %s\n", $interface->adaptername if $interface->adaptername; printf "Device: %s\n", $interface->device if $interface->device; printf "ifIndex: %s\n", $interface->ifindex if $interface->ifindex; printf "MAC: %s\n", $interface->mac if $interface->mac; printf "IPv4: %s\n", $interface->ipv4 if $interface->ipv4; printf "IPv4 netmask: %s\n", $interface->ipv4_netmask if $interface->ipv4_netmask; printf "IPv4 gateway: %s\n", $interface->ipv4_default_gateway if $interface->ipv4_default_gateway; printf "IPv4 gateway MAC: %s\n", $interface->ipv4_gateway_mac if $interface->ipv4_gateway_mac; printf "IPv4 MTU: %s\n", $interface->ipv4_mtu if $interface->ipv4_mtu; printf "IPv6: %s\n", $interface->ipv6 if $interface->ipv6; printf "IPv6 link-local: %s\n", $interface->ipv6_link_local if $interface->ipv6_link_local; # printf "IPv6 DHCPv6 IAID: %s\n", $interface->dhcpv6_iaid if $interface->dhcpv6_iaid; # printf "IPv6 DHCPv6 DUID: %s\n", $interface->dhcpv6_duid if $interface->dhcpv6_duid; printf "IPv6 gateway: %s\n", $interface->ipv6_default_gateway if $interface->ipv6_default_gateway; printf "IPv6 gateway MAC: %s\n", $interface->ipv6_gateway_mac if $interface->ipv6_gateway_mac; printf "IPv6 MTU: %s\n", $interface->ipv6_mtu if $interface->ipv6_mtu; printf "MTU: %s\n", $interface->mtu if $interface->mtu; printf "DNS Server %s\n", $interface->dnsserver if $interface->dnsserver; print "\n"; print $interface->dump; printf "\nDONE - %s\n", $interface->name if $interface->name; } }