Peter Stuifzand

Using a script to update Mediawiki

I created a script that allows me to update a page on a media wiki. It uses WWW::Mechanize, IO::All and Config::Std. The last two modules aren’t needed probably. But it makes it all a lot simpler.

#!/usr/bin/perl -w

use IO::All;
use WWW::Mechanize;
use Config::Std;

read_config "$ENV{HOME}/.mediawiki" => my %config;

my $username = $config{login}{username};
my $password = $config{login}{password};
my $hostname = $config{login}{hostname};

my $title = $ARGV[0] or die "usage:   mediawiki [page title with under scores]\n\n";
my $url = "http://$hostname/mediawiki/index.php?title=$title&action=edit";

my $ua = WWW::Mechanize->new;

my $login_url = "http://$hostname/mediawiki/index.php?title=Special:Userlogin&returnto=Main_Page";

$ua->field('wpName', $username);
$ua->field('wpPassword', $password);



my $form = $ua->current_form();

my $tmpfile = io('/tmp/mediawiki-1');
$form->value('wpTextbox1') > $tmpfile;

system('vi /tmp/mediawiki-1');


my $content = $tmpfile->slurp;
$ua->field('wpTextbox1', $content);

print "Done!\n\n";

The configuration is read from /home/$USER/.mediawiki. It should look something like this.

username=your name
password=your password
hostname=your wiki hostname

Where hostname should be something like ’localhost’ or ‘’.

Oh, this code comes without any warranty. Use at your own risk.

© 2023 Peter Stuifzand