1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#!/usr/bin/perl
#
# t/random.pl
#
# ������˺�������ʸ����(�Х��ʥ���)�������Ѵ�.
#
# $ sh runtest.sh t/random.pl > random.out
#
# �۾ェλ���ˤ�
# $ sh runtest.sh t/random_redo.pl
# �ǥ�ȥ饤�Ǥ��ޤ�.
#
use strict;
use Unicode::Japanese;
my $maxlen = 512;
our @charcodes = (
'jis', 'sjis', 'euc',
'sjis-imode', 'sjis-doti', 'sjis-jsky',
);
our $count = 0;
my $file = 'random.dat';
open(FILE,">$file") or die "cannot open [$file]";
select((select(FILE),$|=1)[0]);
$| = 1;
print "[0x000000]";
for(;; ++$count)
{
if( ($count&0xFF)==0 && $count )
{
if( ($count&0x3FFF)==0 )
{
printf "\n[%#08x]",$count;
}else
{
print ".";
}
}
my $len = int(rand($maxlen-4))+4;
my $src = '';
for( my $i=0; $i<$len; ++$i )
{
$src .= pack('C',int(rand(0x256)));
}
seek FILE,0,0;
print FILE pack('N',$count);
print FILE pack('N',length($src));
print FILE $src;
truncate FILE,length($src)+8;
# ------------------------------------
# utf8 => jis/eucjp/etc.
#
my $str = Unicode::Japanese->new($src,'utf8');
foreach my $ocode ( @charcodes )
{
$str->conv($ocode);
}
# ------------------------------------
# jis/eucjp/etc. => utf8
foreach my $icode ( @charcodes )
{
Unicode::Japanese->new($src,$icode);
}
}
|