my @datums = ( { field => 'out', snmptag => '1.3.6.1.2.1.2.2.1.16.1', opt => 'U' }, { field => 'in', snmptag => '1.3.6.1.2.1.2.2.1.10.1', opt => 'D' }, # ... # read 'em in (probably don't care about order, but what the heck) for my $datum (@datums) { chomp($data{$datum->{field}} = qx/snmpget -v1 -c $string $ip $datum->{snmptag}/) if $opt{$datum->{opt}}; } $update_string = join ':', 'N', map { /: (\d+)/; $1 } @data{ map { $_->{field} } @datums }; #### my @fields = map { qx/snmpget -v1 -c $string $ip $_->{snmptag}/ =~ /: (\d+)/; $1 } grep { $opt{$_->{opt}} } @datums; $update_string = join ':', 'N', @fields;