#!/usr/bin/perl

use strict;
use File::Basename;

my $khfile = $ENV{'HOME'} .'/.ssh/known_hosts';
my $script = basename($0);

die "Can't read from $khfile\n" unless -r $khfile;
die "Can't write to $khfile\n" unless -w $khfile;
die "USAGE: $script line-number (more line-numbers)\n" unless($ARGV[0]);

open(KHFH, '<', $khfile);
my @lines = <KHFH>;
close(KHFH);

foreach (@ARGV){
    die "$script only takes numbers as arguements\n" unless(/^\d+$/);
    die "There's no line #$_ in $khfile\n" if(($_ -1) > $#lines);
}

my @toremove = reverse sort {$a <=> $b} @ARGV;
foreach (@toremove){
    my $offset = $_ -1;
    splice(@lines, $offset, 1);
    print "Removing line #$_ from $khfile\n";
}

open(KHI, '>', $khfile);
foreach (@lines){
    print KHI;
}
close(KHI);

