#!/usr/bin/perl use strict; my $dir = './'; opendir INFOBASE, $dir; my @key = grep {s/^([0-9A-Fa-f]+)\.txt$/$1/} readdir INFOBASE; close INFOBASE; use Time::Local; my %meta; for my $key (@key) { open INFO, $dir.$key.'.txt'; local $/ = undef; $key =~ s/([0-9A-Fa-f]{2})/chr hex $1/ge; for (split /\x0D?\x0A/, ) { my ($name => $value) = split /=/, $_, 2; if ($name eq 'LastModified' && $value =~ /... (...) ([\d\s]{2}) (\d\d):(\d\d):(\d\d) (\d{4})/) { $value = timegm ($5,$4,$3,$2,{qw/Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5 Jul 6 Aug 7 Sep 8 Oct 9 Nov 10 Dec 11/}->{$1},$6-1900); } elsif ($name eq 'IsFrozen' && !$value) { $value = undef; } $meta{$name}->{$key} = $value if length $value; } close INFO; } for my $name (keys %meta) { my $ename = $name; $ename =~ s/(.)/sprintf '%02X', ord $1/ge; open META, "> ${dir}mt--${ename}.dat"; binmode META; print META "#?SuikaWikiMetaInfo/0.9\n\x02".join "\x1E", map {$_."\x1F".$meta{$name}->{$_}} keys %{$meta{$name}}; close META; } =head1 NAME ywinfo2meta.pl --- SuikaWiki: InfoBase of YukiWiki2 to Meta-information database of Yuki::YukiWikiDBMeta converter =head1 DESCRIPTION This script converts information database of YukiWiki2 (implemented with Yuki::YukiWikiDB) to meta-information database of Yuki::YukiWikiDBMeta. =head1 USAGE $ cd /peth/to/infobase $ perl ykwinfo2meta.pl (You can find files named as ./mt--[keyname].dat) =head1 LICENSE Copyright 2003 Wakaba This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut