#! perl -lw
open FI,$ARGV[0] or die;
if($ARGV[1] eq 'expect-full-version'){
    $expectfullversion=1;
}elsif($ARGV[1] eq 'expect-just-name'){
} else {
    die;
}
if($ARGV[2] eq 'chop-version'){
    $chop=1;
    die unless $expectfullversion;
} elsif ($ARGV[2] eq 'keep-full'){
} else {
    die;
}
if($ARGV[3] eq 'subtract-by-name'){
    $namesubtract=1;
} elsif ($ARGV[3] eq 'subtract-full'){
    die if $chop;
} else {
    die;
}
while(<FI>){
    chomp;
    if($expectfullversion){
        die "bad line ($_)" unless /^(\S+)-([0-9.]+)$/;
        if($chop){
            $a{$1}=$2;
        } else {
            $n{$_}=1;
        }
    } else {
        $n{$_}=1;
    }
}
while(<STDIN>){
    chomp;
    die "bad line ($_)" unless /^(\S+)-([0-9.]+)$/;
    if($namesubtract){
        if($chop){
            next if defined($a{$1});
        } else {
            next if defined($n{$1});
        }
    } else {
        next if defined($n{$_})
    }
    print;
}
