Utilisateur:KelBot/kbsed

Un article de Wikipédia, l'encyclopédie libre.

#!/usr/bin/perl
 
use KelBot;
use strict;
use Getopt::Long;
 
my $pw;
 
my $page;
my @find;
my $replacement;
my $summary;
 
GetOptions('find=s' => \@find, 'page=s' => \$page, 'replacement=s' => \$replacement, 'summary=s'=> \$summary );
 
if (!scalar(@find) || !defined($replacement) || !defined($summary) ) {
    print "usage: ./kbsed.pl --page=page --find=your_regexp --replacement=replacement --summary=your_summary\n";
    exit
};
 
if ($page) {
    kbsed($page);
} else {
    unless ($page) {
        while ($page = <STDIN>) {
            $page =~ s/\n//;
            kbsed($page);
        }
    }
}
 
sub kbsed {
    my $page = shift;
 
    return unless ($page);
 
    unless ($pw) {
        $pw = KelBot->new('kbsed');
        $pw->login();
    }
 
    $page = `php -q ./urlencode.php "$page"`;
 
    my $content = $pw->get_text($page)."\n"; 
    my $old_content = $content;
 
    foreach my $f (@find) {
        $content =~ s/$f/$1$replacement$3/g;
    }
 
    unless ($content eq $old_content) {
        $pw->edit($page, $content, $summary); 
    }
}