Solution: Sort SNMP numbers
examples/regex-perl/sort_snmp_numbers.pl
#!/usr/bin/perl use strict; use warnings; my $filename = shift or die "Usage: $0 filename\n"; open(my $fh, "<", $filename) or die "Could not open '$filename'\n"; my @snmps = <$fh>; chomp @snmps; print join "\n", @snmps; print "\n------------------\n"; my @sorted_snmps = sort { cmp_snmp($a, $b) } @snmps; print join "\n", @sorted_snmps; sub cmp_snmp { my ($first, $second) = @_; if ($first eq $second) { return 0; } my @F = split /\./, $first; my @S = split /\./, $second; foreach my $i (0..@F-1) { if ($i >= @S) { return 1; } if ($F[$i] < $S[$i]) { return -1; } if ($F[$i] > $S[$i]) { return 1; } } return -1; } print "\n------------------\n";