Current File : //bin/dnssort
#! /usr/bin/perl
#
# Perl script to sort DNS names
#

# *************************************************************************
# *  Copyright © 2004-2006 Rémi Denis-Courmont.                           *
# *  This program is free software: you can redistribute and/or modify    *
# *  it under the terms of the GNU General Public License as published by *
# *  the Free Software Foundation, versions 2 or 3 of the license.        *
# *                                                                       *
# *  This program is distributed in the hope that it will be useful,      *
# *  but WITHOUT ANY WARRANTY; without even the implied warranty of       *
# *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
# *  GNU General Public License for more details.                         *
# *                                                                       *
# *  You should have received a copy of the GNU General Public License    *
# *  along with this program. If not, see <http://www.gnu.org/licenses/>. *
# *************************************************************************

use strict;
#use locale; -- not very useful for DNS
use Getopt::Std;

$Getopt::Std::STANDARD_HELP_VERSION = 1;
$main::VERSION = '1.0.4';

sub main::HELP_MESSAGE()
{
	print "Usage: dnssort [-r] [FILES]\n".
	      "       Sorts DNS hostnames from input.\n";
}


# Parse command line
our $opt_r;
getopts('r');

if ($#ARGV < 0)
{
	# No files specified -> Use standard input
	push @ARGV, '-';
}

# Read files
my @names = ();

foreach (@ARGV)
{
	open FD,"< $_" or die "$_: $!\n";
	while(<FD>)
	{
		chomp;
		push @names, join('.', reverse split /\./);
	}
	close FD;
}

# Sort entries
@names = sort { lc($a) cmp lc($b) } @names;
if ($opt_r)
{
	@names = reverse @names;
}

# Print results
foreach (@names)
{
	print join('.', reverse split /\./)."\n";
}