#!/usr/athena/bin/perl

$numbers[1] = 'Ten';
$numbers[2] = 'Twenty';
$numbers[3] = 'Thirty';
$numbers[4] = 'Forty';
$numbers[5] = 'Fifty';
$numbers[6] = 'Sixty';
$numbers[7] = 'Seventy';
$numbers[8] = 'Eighty';
$numbers[9] = 'Ninety';
$numbers[10] = '';
$numbers[11] = 'One';
$numbers[12] = 'Two';
$numbers[13] = 'Three';
$numbers[14] = 'Four';
$numbers[15] = 'Five';
$numbers[16] = 'Six';
$numbers[17] = 'Seven';
$numbers[18] = 'Eight';
$numbers[19] = 'Nine';
$numbers[20] = 'Ten';
$numbers[21] = 'Eleven';
$numbers[22] = 'Twelve';
$numbers[23] = 'Thirteen';
$numbers[24] = 'Fourteen';
$numbers[25] = 'Fifteen';
$numbers[26] = 'Sixteen';
$numbers[27] = 'Seventeen';
$numbers[28] = 'Eighteen';
$numbers[29] = 'Ninteen';

$prefix = shift(@ARGV) || die "Must specify host name prefix";
$start = shift(@ARGV) || die "Must specify starting numeral";
$end = shift(@ARGV) || die "Must specify ending numeral";
$address = shift(@ARGV) || die "Must specify address";
$network = shift(@ARGV) || die "Must specify moira network";
$really = shift(@ARGV);

@fields = split(/\./, $address);
$oct1 = $fields[0];
$oct2 = $fields[1];
$oct3 = $fields[2];
$oct4 = $fields[3];
$j = 0;
$i = $start;

while($j < $end) {
    # $word = &num2words($i);
    $word = "$oct1-$oct2-$oct3-$oct4";

    $cmd = sprintf("stella -A $oct1.$oct2.$oct3.$oct4 " . $prefix . "-" 
		   . $word . " -N $network -C\n");

    if($oct4 >= 65) {
	print $cmd;
    }

    if(($really eq "-really")) {
	system($cmd);
	sleep(1);
    }
    
    if($oct4 >= 250) {
	$i += $oct3;
	$oct4 = 1;
	$oct3++;
    }
    else {
	$oct4++;
    }
    $j++;
    $i++;
}

sub num2words {
    local($number) = @_;
    
    if($number > 1000) {
	if(($number%100) != 0) {
	    $temp = &num2words($number%100);
	    if(($temp =~ /^One$|^Two$|^Three$|^Four$|^Five$/) ||
	       ($temp =~ /^Six$|^Seven$|^Eight$|^Nine$/)) {
		$res = sprintf("%s-O-%s", &num2words($number/100),
			       &num2words($number%100));
	    }
	    else {
		$res = sprintf("%s-%s", &num2words($number/100),
			       &num2words($number%100));
	    }
	}
	else {
	    $res = sprintf("%s-Hundred", &num2words($number/100),
			   &num2words($number%100));
	}
	return $res;
    }
    elsif($number >= 100) {
	if(($number%100) != 0) {
	    $temp = &num2words($number%100);
	    if(($temp =~ /^One$|^Two$|^Three$|^Four$|^Five$/) ||
	       ($temp =~ /^Six$|^Seven$|^Eight$|^Nine$/)) {
		$res = sprintf("%s-O-%s", &num2words($number/100),
			       &num2words($number%100));
	    }
	    else {
		$res = sprintf("%s-%s", &num2words($number/100),
			       &num2words($number%100));
	    }
	}
	else {
	    $res = sprintf("%s-Hundred %s", &num2words($number/100),
			   &num2words($number%100));
	}
	return $res;
    }
    elsif($number >= 20) {
	if(($number%10) != 0) {
	    $res = sprintf("%s-%s", $numbers[$number/10], 
			   &num2words($number%10));
	}
	else {
	    $res = sprintf("%s %s", $numbers[$number/10], 
			   &num2words($number%10));
	}
	return $res;
    }
    else {
	$res = $numbers[$number + 10];
	return $res;
    }
}

