my (@a, @b); my @port_ifIndices = sort { if ($oids{ifName}{$a} =~ /\//) { @a = split(/\//, $oids{ifName}{$a}); @b = split(/\//, $oids{ifName}{$b}); } else { @a = $oids{ifName}{$a}; @b = $oids{ifName}{$b}; } if ($a[0] =~ /[A-Za-z]/) { $a[0] ne $b[0] ? $a[0] cmp $b[0] : ($a[1] <=> $b[1] ? $a[1] <=> $b[1] : $a[2] <=> $b[2]); } else { $a[0] != $b[0] ? $a[0] <=> $b[0] : ($a[1] <=> $b[1] ? $a[1] <=> $b[1] : $a[2] <=> $b[2]); } } keys(%{ $oids{ifName} }); foreach my $ifIndex (@port_ifIndices) { print ("$ifIndex: $oids{ifName}{$ifIndex}\n"); }