#! /usr/bin/env perl use strict; use warnings; use Data::Dumper; my $cmd = "ip addr show"; my %interface; open my $pipe, '-|', $cmd or die "(E) could not execute: $cmd: $!\n"; my $int; while ( my $line = <$pipe> ) { if ( $line =~ m/^\d+:\s+([^:]+): <([^>]+)>/ ) { $int = $1; $interface{$int}->{abilities} = $2; } while ( $line =~ m/(mtu|state|inet6?) (\S+)/g ) { $interface{$int}->{$1} = $2; } } warn Dumper \%interface; close $pipe;