Χρήστης:AtouBot/remove-titles.pl

Από Βικιλεξικό
Μετάβαση στην πλοήγηση Πήδηση στην αναζήτηση
#!/usr/bin/perl

binmode(STDOUT, ":utf8");
binmode(STDIN, ":utf8");

use encoding(UTF8);
use utf8;
# διαβάζουμε τον κατάλογο με τους τίτλους λημμάτων που θέλουμε να αφαιρέσουμε από το αρχείο xml
# διαβάζουμε το αρχείο xml και γράφουμε στην έξοδο μόνο τα λήμματα που 
# δεν είναι στον κατάλογο

# ο κατάλογος μπορεί να περιέχει ονόματα είτε μέ [[ ]] είτε χωρίς

if ($#ARGV < 0) {
    print "Usage: $0 filename-of-titles-to-remove\n";
    exit 1;
}

$filename=$ARGV[0];

# hash of titles from file...
open(FILE,'<',$filename) or die("can't open file $filename\n");
binmode(FILE, ":utf8");
while (<FILE>) {
    $line=$_;
    chomp($line);
    $line =~ s/\[//g; 
    $line =~ s/\]//g; 
    $titles{$line}=1;
}
close(FILE);

$text="";
while (<STDIN>) {
    $line=$_;
    $text=$text.$line;
    if ($line =~ /<page>/) {
	$text = $line;
	$title="";
    }
    elsif ($line =~ /<title>(.*)<\/title>/) {
	$title=$1;
    }
    elsif ($line =~ /<\/page>/) {
	if (! $titles{$title}) {
	    print $text;
	}
    }
}