#!/usr/bin/perl -w
use strict;
my @argv = @ARGV;
my @ips = ();
if (0==scalar((@argv))) { &print_Usage(); exit(0); }
&get_Parameter(\@argv,\@ips);
print("Before:\n");
foreach(@ips) { print("\t$_\n"); }
my @ips_sorted = sort sort_ip @ips;
print("After:\n");
foreach(@ips_sorted) { print("\t$_\n"); }
sub sort_ip()
{
my ($a1,$a2,$a3,$a4) = split(/\./,$a);
my ($b1,$b2,$b3,$b4) = split(/\./,$b);
$a1 <=> $b1 or $a2 <=> $b2 or $a3 <=> $b3 or $a4 <=> $b4;
}
sub get_Parameter($$)
{
my ($pargv,$pips) = @_;
foreach(@$pargv)
{
if (my(@ip)= $_ =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)
{
my $bError = 0;
if (0==$ip[0] or 0==$ip[3]) { $bError = 1; }
else { foreach(@ip) { if ($_ > 255) { $bError = 1; last; } } }
if (not $bError) { push(@$pips,join(".",@ip)); }
}
}
}
sub print_Usage()
{
my $strSelf = $0; $strSelf =~ s/.+[\\\/]//;
print("usage: $strSelf ip1 ip2 ip3\n");
}

沒有留言:
張貼留言