use strict; use warnings; use Win32::IPHelper; use Data::Dumper; my @IP_ADAPTER_INFO; my $data; my $ret = Win32::IPHelper::GetAdaptersInfo(\@IP_ADAPTER_INFO); if ($ret == 0) { $data = Data::Dumper->Dump([\@IP_ADAPTER_INFO], [qw(IP_ADAPTER_INFO)]); my $string = $data=~ /'AdapterName' => '{(.*?)}'/; my $adp_string = $1; &int_info($adp_string); } else { printf "GetAdaptersInfo() error %u: %s\n", $ret, Win32::FormatMessage($ret); } sub int_info { (my $adp_string) = @_; my $IfIndex; my $AdapterName = "{$adp_string}"; my $ret = Win32::IPHelper::GetAdapterIndex(\$AdapterName,\$IfIndex); if ($ret == 0) { my %MIB_IFROW; $ret = Win32::IPHelper::GetIfEntry($IfIndex,\%MIB_IFROW); if ($ret == 0) { my $data = Data::Dumper->Dump([\%MIB_IFROW], [qw(MIB_IFROW)]); my $speed = $data=~ /'Speed' =>(.*?),/; $speed = $1; my $adp_type = $data=~ /'Descr' =>(.*?),/; $adp_type = $1; print "\n$data\nspeed = $speed\nAdapter Type = $adp_type\n"; } else { printf "GetIfEntry() error %u: %s\n", $ret, Win32::FormatMessage($ret); } } else { printf "GetAdapterIndex() error %u: %s\n", $ret, Win32::FormatMessage($ret); } }