line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package HTML::AA;
|
2
|
|
|
|
|
|
|
|
3
|
1
|
|
|
1
|
|
34645
|
use 5.008008;
|
|
1
|
|
|
|
|
5
|
|
|
1
|
|
|
|
|
43
|
|
4
|
1
|
|
|
1
|
|
7
|
use strict;
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
36
|
|
5
|
1
|
|
|
1
|
|
4
|
use warnings;
|
|
1
|
|
|
|
|
6
|
|
|
1
|
|
|
|
|
11316
|
|
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
require Exporter;
|
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
our @ISA = qw(Exporter);
|
10
|
|
|
|
|
|
|
our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
|
11
|
|
|
|
|
|
|
our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
|
12
|
|
|
|
|
|
|
our @EXPORT = qw( );
|
13
|
|
|
|
|
|
|
our $VERSION = '0.10';
|
14
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
15
|
|
|
|
|
|
|
# Module declaration
|
16
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
17
|
|
|
|
|
|
|
sub new {
|
18
|
0
|
|
|
0
|
0
|
|
my $self = {};
|
19
|
0
|
|
|
|
|
|
bless $self;
|
20
|
0
|
|
|
|
|
|
return $self;
|
21
|
|
|
|
|
|
|
}
|
22
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
23
|
|
|
|
|
|
|
# The character-code is declared.
|
24
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
25
|
|
|
|
|
|
|
my $code = 'euc';
|
26
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
27
|
|
|
|
|
|
|
# The character-code that the module processes is declared.
|
28
|
|
|
|
|
|
|
# It is effective in the call that doesn't specify the character-code.
|
29
|
|
|
|
|
|
|
# If it wants to process it with EUC-JP, it is euc.
|
30
|
|
|
|
|
|
|
# $aart -> code('euc');
|
31
|
|
|
|
|
|
|
# If it wants to process it with Shift_JIS, it is sjis.
|
32
|
|
|
|
|
|
|
# $aart -> code('sjis');
|
33
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
34
|
|
|
|
|
|
|
sub code {
|
35
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
36
|
0
|
|
|
|
|
|
$code = shift;
|
37
|
|
|
|
|
|
|
}
|
38
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
39
|
|
|
|
|
|
|
# The number of dots is calculated.
|
40
|
|
|
|
|
|
|
# $aart -> calcu($str);
|
41
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
42
|
|
|
|
|
|
|
sub calcu {
|
43
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
44
|
0
|
|
|
|
|
|
my $str = shift;
|
45
|
|
|
|
|
|
|
|
46
|
0
|
0
|
|
|
|
|
return $self -> calcu_euc($str) if $code eq 'euc';
|
47
|
0
|
0
|
|
|
|
|
return $self -> calcu_sjis($str) if $code eq 'sjis';
|
48
|
|
|
|
|
|
|
}
|
49
|
|
|
|
|
|
|
# When you want to process it with EUC-JP disregarding the character-code declaration
|
50
|
|
|
|
|
|
|
# $aart -> calcu_euc($str);
|
51
|
|
|
|
|
|
|
sub calcu_euc {
|
52
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
53
|
0
|
|
|
|
|
|
my $str = shift;
|
54
|
|
|
|
|
|
|
|
55
|
0
|
|
|
|
|
|
my $count = 0;
|
56
|
|
|
|
|
|
|
|
57
|
0
|
|
|
|
|
|
foreach ( $self -> divide_euc($str) ) {
|
58
|
|
|
|
|
|
|
#------------------- 2 bytes
|
59
|
0
|
0
|
|
|
|
|
if ($_ =~ /../) {
|
60
|
0
|
0
|
|
|
|
|
if ($_ =~ /\xa1\xbc|\xa3\xcd|\xa3\xed|\xa4\xa2|\xa4\xa4|\xa4\xaa|\xa4\xb1|\xa4\xb9|\xa4\xbd|\xa4\xbe|\xa4\xbf|\xa4\xc0|\xa4\xc4|\xa4\xc5|\xa4\xcb|\xa4\xd2|\xa4\xd3|\xa4\xd4|\xa4\xf3|\xa5\xa6|\xa5\xaa|\xa5\xac|\xa5\xad|\xa5\xae|\xa5\xb0|\xa5\xb1|\xa5\xb2|\xa5\xba|\xa5\xbb|\xa5\xc0|\xa5\xc1|\xa5\xc2|\xa5\xc5|\xa5\xc7|\xa5\xca|\xa5\xcb|\xa5\xcd|\xa5\xd8|\xa5\xd9|\xa5\xda|\xa5\xdb|\xa5\xdc|\xa5\xdd|\xa5\xe6|\xa5\xef|\xa5\xf4/){
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
61
|
0
|
|
|
|
|
|
$count += 15;
|
62
|
|
|
|
|
|
|
}
|
63
|
|
|
|
|
|
|
elsif ($_ =~ /\xa4\xa8|\xa4\xad|\xa4\xae|\xa4\xb4|\xa4\xb6|\xa4\xc1|\xa4\xc2|\xa4\xc6|\xa4\xc7|\xa4\xc9|\xa4\xca|\xa4\xde|\xa4\xe3|\xa4\xe5|\xa4\xe8|\xa4\xeb|\xa4\xed|\xa4\xee|\xa4\xf2|\xa5\xa2|\xa5\xa8|\xa5\xb4|\xa5\xb7|\xa5\xb8|\xa5\xb9|\xa5\xbe|\xa5\xc4|\xa5\xc6|\xa5\xd3|\xa5\xd4|\xa5\xd6|\xa5\xd7|\xa5\xde|\xa5\xe2|\xa5\xec|\xa5\xed|\xa5\xf3/){
|
64
|
0
|
|
|
|
|
|
$count += 14;
|
65
|
|
|
|
|
|
|
}
|
66
|
|
|
|
|
|
|
elsif ($_ =~ /\xa3\xcf|\xa3\xd1|\xa4\xa3|\xa4\xa9|\xa4\xb0|\xa4\xb3|\xa4\xc3|\xa4\xe2|\xa4\xe9|\xa5\xa4|\xa5\xa9|\xa5\xab|\xa5\xaf|\xa5\xb3|\xa5\xbd|\xa5\xcc|\xa5\xd5|\xa5\xe3|\xa5\xe5|\xa5\xe9|\xa5\xf2/){
|
67
|
0
|
|
|
|
|
|
$count += 13;
|
68
|
|
|
|
|
|
|
}
|
69
|
|
|
|
|
|
|
elsif ($_ =~ /\xa1\xb3|\xa1\xb4|\xa1\xb5|\xa3\xc2|\xa3\xc3|\xa3\xc4|\xa3\xc7|\xa3\xc8|\xa3\xcb|\xa3\xce|\xa3\xd2|\xa3\xd3|\xa3\xd5|\xa3\xf7|\xa4\xa1|\xa4\xa7|\xa4\xb5|\xa4\xb7|\xa4\xb8|\xa4\xc8|\xa4\xe7|\xa4\xea|\xa5\xa1|\xa5\xa5|\xa5\xa7|\xa5\xbf|\xa5\xc3|\xa5\xd2|\xa5\xe1|\xa5\xe8|\xa5\xea|\xa5\xee|\xa5\xf5|\xa5\xf6/){
|
70
|
0
|
|
|
|
|
|
$count += 12;
|
71
|
|
|
|
|
|
|
}
|
72
|
|
|
|
|
|
|
elsif ($_ =~ /\x8e\xbb|\x8e\xd1|\x8e\xd4|\x8e\xd9|\xa1\xa2|\xa1\xa3|\xa1\xa4|\xa1\xa5|\xa1\xb6|\xa3\xb0|\xa3\xb1|\xa3\xb2|\xa3\xb3|\xa3\xb4|\xa3\xb5|\xa3\xb6|\xa3\xb7|\xa3\xb8|\xa3\xb9|\xa3\xc1|\xa3\xc5|\xa3\xd0|\xa3\xd6|\xa4\xa6|\xa5\xc9|\xa5\xce|\xa5\xdf|\xa1\xa1/){
|
73
|
0
|
|
|
|
|
|
$count += 11;
|
74
|
|
|
|
|
|
|
}
|
75
|
|
|
|
|
|
|
elsif ($_ =~ /\x8e\xb0|\x8e\xb1|\x8e\xb3|\x8e\xb4|\x8e\xb5|\x8e\xb7|\x8e\xb9|\x8e\xbd|\x8e\xbe|\x8e\xc1|\x8e\xc2|\x8e\xc3|\x8e\xc5|\x8e\xc6|\x8e\xc8|\x8e\xca|\x8e\xcd|\x8e\xce|\x8e\xcf|\x8e\xd3|\x8e\xd5|\xa3\xc6|\xa3\xca|\xa3\xcc|\xa3\xd4|\xa3\xd8|\xa3\xd9|\xa3\xda|\xa3\xe2|\xa3\xe4|\xa3\xe8|\xa3\xeb|\xa3\xee|\xa3\xef|\xa3\xf0|\xa3\xf1|\xa3\xf5|\xa4\xa5|\xa5\xa3|\xa5\xc8|\xa5\xe7/){
|
76
|
0
|
|
|
|
|
|
$count += 10;
|
77
|
|
|
|
|
|
|
}
|
78
|
|
|
|
|
|
|
elsif ($_ =~ /\xa3\xe1|\xa3\xe3|\xa3\xe5|\xa3\xe7|\xa3\xf3|\xa4\xaf|\x8e\xa6|\x8e\xb2|\x8e\xb6|\x8e\xb8|\x8e\xba|\x8e\xbc|\x8e\xbf|\x8e\xc0|\x8e\xc7|\x8e\xcc|\x8e\xd7|\x8e\xda|\x8e\xdb|\x8e\xdc|\x8e\xdd/){
|
79
|
0
|
|
|
|
|
|
$count += 9;
|
80
|
|
|
|
|
|
|
}
|
81
|
|
|
|
|
|
|
elsif ($_ =~ /\x8e\xa7|\x8e\xa9|\x8e\xaa|\x8e\xab|\x8e\xac|\x8e\xad|\x8e\xaf|\x8e\xc9|\x8e\xcb|\x8e\xd2|\x8e\xd6|\x8e\xd8|\xa1\xa6|\xa1\xa7|\xa1\xa8|\xa1\xab|\xa1\xac|\xa1\xad|\xa1\xae|\xa1\xaf|\xa1\xb0|\xa1\xbe|\xa1\xc6|\xa1\xc7|\xa1\xc8|\xa1\xc9|\xa1\xca|\xa1\xcb|\xa1\xcc|\xa1\xcd|\xa1\xce|\xa1\xcf|\xa1\xd0|\xa1\xd1|\xa1\xd2|\xa1\xd3|\xa1\xd4|\xa1\xd5|\xa1\xd6|\xa1\xd7|\xa1\xd8|\xa1\xd9|\xa1\xda|\xa1\xdb|\xa2\xf7|\xa2\xf8|\xa2\xf9|\xa3\xf6|\xa3\xf8|\xa3\xf9|\xa3\xfa/){
|
82
|
0
|
|
|
|
|
|
$count += 8;
|
83
|
|
|
|
|
|
|
}
|
84
|
|
|
|
|
|
|
elsif ($_ =~ /\x8e\xa2|\x8e\xa3|\x8e\xa5|\x8e\xa8|\x8e\xae|\x8e\xc4|\x8e\xd0|\x8e\xa1|\x8e\xa4/){
|
85
|
0
|
|
|
|
|
|
$count += 7;
|
86
|
|
|
|
|
|
|
}
|
87
|
|
|
|
|
|
|
elsif ($_ =~ /\xa3\xf2/){
|
88
|
0
|
|
|
|
|
|
$count += 6;
|
89
|
|
|
|
|
|
|
}
|
90
|
|
|
|
|
|
|
elsif ($_ =~ /\xa3\xe6|\xa3\xf4/){
|
91
|
0
|
|
|
|
|
|
$count += 5;
|
92
|
|
|
|
|
|
|
}
|
93
|
|
|
|
|
|
|
elsif ($_ =~ /\x8e\xde|\x8e\xdf|\xa3\xc9|\xa3\xe9|\xa3\xea|\xa3\xec/){
|
94
|
0
|
|
|
|
|
|
$count += 4;
|
95
|
|
|
|
|
|
|
}
|
96
|
|
|
|
|
|
|
# There is no character of 3 dots.
|
97
|
|
|
|
|
|
|
else {
|
98
|
0
|
|
|
|
|
|
$count += 16;
|
99
|
|
|
|
|
|
|
}
|
100
|
|
|
|
|
|
|
}
|
101
|
|
|
|
|
|
|
#------------------- 1byte
|
102
|
|
|
|
|
|
|
else {
|
103
|
|
|
|
|
|
|
# There is no character of 15 dots.
|
104
|
|
|
|
|
|
|
# There is no character of 14 dots.
|
105
|
|
|
|
|
|
|
# There is no character of 13 dots.
|
106
|
0
|
0
|
|
|
|
|
if ($_ =~ /\x4d|\x57|\x6d/){
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
107
|
0
|
|
|
|
|
|
$count += 12;
|
108
|
|
|
|
|
|
|
}
|
109
|
|
|
|
|
|
|
elsif ($_ =~ /\x40|\x43|\x47|\x4f|\x51/){
|
110
|
0
|
|
|
|
|
|
$count += 11;
|
111
|
|
|
|
|
|
|
}
|
112
|
|
|
|
|
|
|
elsif ($_ =~ /\x26|\x41|\x42|\x44|\x48|\x4b|\x4e|\x50|\x52|\x53|\x55|\x56|\x58|\x77/){
|
113
|
0
|
|
|
|
|
|
$count += 10;
|
114
|
|
|
|
|
|
|
}
|
115
|
|
|
|
|
|
|
elsif ($_ =~ /\x45|\x46|\x4a|\x4c|\x54|\x59|\x5a/){
|
116
|
0
|
|
|
|
|
|
$count += 9;
|
117
|
|
|
|
|
|
|
}
|
118
|
|
|
|
|
|
|
elsif ($_ =~ /\x61|\x62|\x63|\x64|\x65|\x68|\x6e|\x6f|\x70|\x71|\x75|\x76|\x79|\x22|\x23|\x24|\x25|\x2a|\x2b|\x2d|\x2f|\x30|\x31|\x32|\x33|\x34|\x35|\x36|\x37|\x38|\x39|\x3c|\x3d|\x3e|\x5c/){
|
119
|
0
|
|
|
|
|
|
$count += 8;
|
120
|
|
|
|
|
|
|
}
|
121
|
|
|
|
|
|
|
elsif ($_ =~ /\x3f|\x5e|\x60|\x67|\x6b|\x73|\x78|\x7a|\x7e/){
|
122
|
0
|
|
|
|
|
|
$count += 7;
|
123
|
|
|
|
|
|
|
}
|
124
|
|
|
|
|
|
|
elsif ($_ =~ /\x72|\x74/){
|
125
|
0
|
|
|
|
|
|
$count += 6;
|
126
|
|
|
|
|
|
|
}
|
127
|
|
|
|
|
|
|
elsif ($_ =~ /\x28|\x29|\x5b|\x5d|\x5f|\x66|\x20/){
|
128
|
0
|
|
|
|
|
|
$count += 5;
|
129
|
|
|
|
|
|
|
}
|
130
|
|
|
|
|
|
|
elsif ($_ =~ /\x21|\x49|\x6a|\x7b|\x7c|\x7d/){
|
131
|
0
|
|
|
|
|
|
$count += 4;
|
132
|
|
|
|
|
|
|
}
|
133
|
|
|
|
|
|
|
elsif ($_ =~ /\x27|\x2c|\x2e|\x3a|\x3b|\x69|\x6c/){
|
134
|
0
|
|
|
|
|
|
$count += 3;
|
135
|
|
|
|
|
|
|
}
|
136
|
|
|
|
|
|
|
}
|
137
|
|
|
|
|
|
|
}
|
138
|
|
|
|
|
|
|
|
139
|
0
|
|
|
|
|
|
return $count;
|
140
|
|
|
|
|
|
|
}
|
141
|
|
|
|
|
|
|
# When you want to process it with Shift_JIS disregarding the character-code declaration
|
142
|
|
|
|
|
|
|
# $aart -> calcu_sjis($str);
|
143
|
|
|
|
|
|
|
sub calcu_sjis {
|
144
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
145
|
0
|
|
|
|
|
|
my $str = shift;
|
146
|
|
|
|
|
|
|
|
147
|
0
|
|
|
|
|
|
my $count = 0;
|
148
|
|
|
|
|
|
|
|
149
|
0
|
|
|
|
|
|
foreach ( $self -> divide_sjis($str) ) {
|
150
|
|
|
|
|
|
|
#------------------- 2 bytes
|
151
|
0
|
0
|
|
|
|
|
if ($_ =~ /../) {
|
152
|
0
|
0
|
|
|
|
|
if ($_ =~ /\x81\x5b|\x82\x6c|\x82\x8d|\x82\xa0|\x82\xa2|\x82\xa8|\x82\xaf|\x82\xb7|\x82\xbb|\x82\xbc|\x82\xbd|\x82\xbe|\x82\xc2|\x82\xc3|\x82\xc9|\x82\xd0|\x82\xd1|\x82\xd2|\x82\xf1|\x83\x45|\x83\x49|\x83\x4b|\x83\x4c|\x83\x4d|\x83\x4f|\x83\x50|\x83\x51|\x83\x59|\x83\x5a|\x83\x5f|\x83\x60|\x83\x61|\x83\x64|\x83\x66|\x83\x69|\x83\x6a|\x83\x6c|\x83\x77|\x83\x78|\x83\x79|\x83\x7a|\x83\x7b|\x83\x7c|\x83\x86|\x83\x8f|\x83\x94/){
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
153
|
0
|
|
|
|
|
|
$count += 15;
|
154
|
|
|
|
|
|
|
}
|
155
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\xa6|\x82\xab|\x82\xac|\x82\xb2|\x82\xb4|\x82\xbf|\x82\xc0|\x82\xc4|\x82\xc5|\x82\xc7|\x82\xc8|\x82\xdc|\x82\xe1|\x82\xe3|\x82\xe6|\x82\xe9|\x82\xeb|\x82\xec|\x82\xf0|\x83\x41|\x83\x47|\x83\x53|\x83\x56|\x83\x57|\x83\x58|\x83\x5d|\x83\x63|\x83\x65|\x83\x72|\x83\x73|\x83\x75|\x83\x76|\x83\x7d|\x83\x82|\x83\x8c|\x83\x8d|\x83\x93/){
|
156
|
0
|
|
|
|
|
|
$count += 14;
|
157
|
|
|
|
|
|
|
}
|
158
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\x6e|\x82\x70|\x82\xa1|\x82\xa7|\x82\xae|\x82\xb1|\x82\xc1|\x82\xe0|\x82\xe7|\x83\x43|\x83\x48|\x83\x4a|\x83\x4e|\x83\x52|\x83\x5c|\x83\x6b|\x83\x74|\x83\x83|\x83\x85|\x83\x89|\x83\x92/){
|
159
|
0
|
|
|
|
|
|
$count += 13;
|
160
|
|
|
|
|
|
|
}
|
161
|
|
|
|
|
|
|
elsif ($_ =~ /\x81\x52|\x81\x53|\x81\x54|\x82\x61|\x82\x62|\x82\x63|\x82\x66|\x82\x67|\x82\x6a|\x82\x6d|\x82\x71|\x82\x72|\x82\x74|\x82\x97|\x82\x9f|\x82\xa5|\x82\xb3|\x82\xb5|\x82\xb6|\x82\xc6|\x82\xe5|\x82\xe8|\x83\x40|\x83\x44|\x83\x46|\x83\x5e|\x83\x62|\x83\x71|\x83\x81|\x83\x88|\x83\x8a|\x83\x8e|\x83\x95|\x83\x96/){
|
162
|
0
|
|
|
|
|
|
$count += 12;
|
163
|
|
|
|
|
|
|
}
|
164
|
|
|
|
|
|
|
elsif ($_ =~ /\x81\x41|\x81\x42|\x81\x43|\x81\x44|\x81\x55|\x82\x4f|\x82\x50|\x82\x51|\x82\x52|\x82\x53|\x82\x54|\x82\x55|\x82\x56|\x82\x57|\x82\x58|\x82\x60|\x82\x64|\x82\x6f|\x82\x75|\x82\xa4|\x83\x68|\x83\x6d|\x83\x7e|\x81\x40/){
|
165
|
0
|
|
|
|
|
|
$count += 11;
|
166
|
|
|
|
|
|
|
}
|
167
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\x65|\x82\x69|\x82\x6b|\x82\x73|\x82\x77|\x82\x78|\x82\x79|\x82\x82|\x82\x84|\x82\x88|\x82\x8b|\x82\x8e|\x82\x8f|\x82\x90|\x82\x91|\x82\x95|\x82\xa3|\x83\x42|\x83\x67|\x83\x87/){
|
168
|
0
|
|
|
|
|
|
$count += 10;
|
169
|
|
|
|
|
|
|
}
|
170
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\x81|\x82\x83|\x82\x85|\x82\x87|\x82\x93|\x82\xad/){
|
171
|
0
|
|
|
|
|
|
$count += 9;
|
172
|
|
|
|
|
|
|
}
|
173
|
|
|
|
|
|
|
elsif ($_ =~ /\x81\x45|\x81\x46|\x81\x47|\x81\x4a|\x81\x4b|\x81\x4c|\x81\x4d|\x81\x4e|\x81\x4f|\x81\x5d|\x81\x65|\x81\x66|\x81\x67|\x81\x68|\x81\x69|\x81\x6a|\x81\x6b|\x81\x6c|\x81\x6d|\x81\x6e|\x81\x6f|\x81\x70|\x81\x71|\x81\x72|\x81\x73|\x81\x74|\x81\x75|\x81\x76|\x81\x77|\x81\x78|\x81\x79|\x81\x7a|\x81\xf5|\x81\xf6|\x81\xf7|\x82\x96|\x82\x98|\x82\x99|\x82\x9a/){
|
174
|
0
|
|
|
|
|
|
$count += 8;
|
175
|
|
|
|
|
|
|
}
|
176
|
|
|
|
|
|
|
# There is no character of 7 dots.
|
177
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\x92/){
|
178
|
0
|
|
|
|
|
|
$count += 6;
|
179
|
|
|
|
|
|
|
}
|
180
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\x86|\x82\x94/){
|
181
|
0
|
|
|
|
|
|
$count += 5;
|
182
|
|
|
|
|
|
|
}
|
183
|
|
|
|
|
|
|
elsif ($_ =~ /\x82\x68|\x82\x89|\x82\x8a|\x82\x8c/){
|
184
|
0
|
|
|
|
|
|
$count += 4;
|
185
|
|
|
|
|
|
|
}
|
186
|
|
|
|
|
|
|
# There is no character of 3 dots.
|
187
|
|
|
|
|
|
|
else {
|
188
|
0
|
|
|
|
|
|
$count += 16;
|
189
|
|
|
|
|
|
|
}
|
190
|
|
|
|
|
|
|
}
|
191
|
|
|
|
|
|
|
#------------------- 1byte
|
192
|
|
|
|
|
|
|
else {
|
193
|
|
|
|
|
|
|
# There is no character of 15 dots.
|
194
|
|
|
|
|
|
|
# There is no character of 14 dots.
|
195
|
|
|
|
|
|
|
# There is no character of 13 dots.
|
196
|
0
|
0
|
|
|
|
|
if ($_ =~ /\x4d|\x57|\x6d/){
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
197
|
0
|
|
|
|
|
|
$count += 12;
|
198
|
|
|
|
|
|
|
}
|
199
|
|
|
|
|
|
|
elsif ($_ =~ /\x40|\x43|\x47|\x4f|\x51|\xbb|\xd1|\xd4|\xd9/){
|
200
|
0
|
|
|
|
|
|
$count += 11;
|
201
|
|
|
|
|
|
|
}
|
202
|
|
|
|
|
|
|
elsif ($_ =~ /\x26|\x41|\x42|\x44|\x48|\x4b|\x4e|\x50|\x52|\x53|\x55|\x56|\x58|\x77|\xb0|\xb1|\xb3|\xb4|\xb5|\xb7|\xb9|\xbd|\xbe|\xc1|\xc2|\xc3|\xc5|\xc6|\xc8|\xca|\xcd|\xce|\xcf|\xd3|\xd5/){
|
203
|
0
|
|
|
|
|
|
$count += 10;
|
204
|
|
|
|
|
|
|
}
|
205
|
|
|
|
|
|
|
elsif ($_ =~ /\x45|\x46|\x4a|\x4c|\x54|\x59|\x5a|\xa6|\xb2|\xb6|\xb8|\xba|\xbc|\xbf|\xc0|\xc7|\xcc|\xd7|\xda|\xdb|\xdc|\xdd/){
|
206
|
0
|
|
|
|
|
|
$count += 9;
|
207
|
|
|
|
|
|
|
}
|
208
|
|
|
|
|
|
|
elsif ($_ =~ /\x61|\x62|\x63|\x64|\x65|\x68|\x6e|\x6f|\x70|\x71|\x75|\x76|\x79|\x22|\x23|\x24|\x25|\x2a|\x2b|\x2d|\x2f|\x30|\x31|\x32|\x33|\x34|\x35|\x36|\x37|\x38|\x39|\x3c|\x3d|\x3e|\x5c|\xa7|\xa9|\xaa|\xab|\xac|\xad|\xaf|\xc9|\xcb|\xd2|\xd6|\xd8/){
|
209
|
0
|
|
|
|
|
|
$count += 8;
|
210
|
|
|
|
|
|
|
}
|
211
|
|
|
|
|
|
|
elsif ($_ =~ /\x3f|\x5e|\x60|\x67|\x6b|\x73|\x78|\x7a|\x7e|\xa2|\xa3|\xa5|\xa8|\xae|\xc4|\xd0|\xa1|\xa4/){
|
212
|
0
|
|
|
|
|
|
$count += 7;
|
213
|
|
|
|
|
|
|
}
|
214
|
|
|
|
|
|
|
elsif ($_ =~ /\x72|\x74/){
|
215
|
0
|
|
|
|
|
|
$count += 6;
|
216
|
|
|
|
|
|
|
}
|
217
|
|
|
|
|
|
|
elsif ($_ =~ /\x28|\x29|\x5b|\x5d|\x5f|\x66|\x20/){
|
218
|
0
|
|
|
|
|
|
$count += 5;
|
219
|
|
|
|
|
|
|
}
|
220
|
|
|
|
|
|
|
elsif ($_ =~ /\x21|\x49|\x6a|\x7b|\x7c|\x7d|\xde|\xdf/){
|
221
|
0
|
|
|
|
|
|
$count += 4;
|
222
|
|
|
|
|
|
|
}
|
223
|
|
|
|
|
|
|
elsif ($_ =~ /\x27|\x2c|\x2e|\x3a|\x3b|\x69|\x6c/){
|
224
|
0
|
|
|
|
|
|
$count += 3;
|
225
|
|
|
|
|
|
|
}
|
226
|
|
|
|
|
|
|
}
|
227
|
|
|
|
|
|
|
}
|
228
|
|
|
|
|
|
|
|
229
|
0
|
|
|
|
|
|
return $count;
|
230
|
|
|
|
|
|
|
}
|
231
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
232
|
|
|
|
|
|
|
# The variable of the character string is resolved to the array of one character.
|
233
|
|
|
|
|
|
|
# $aart -> divide($str);
|
234
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
235
|
|
|
|
|
|
|
sub divide {
|
236
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
237
|
0
|
|
|
|
|
|
my $str = shift;
|
238
|
|
|
|
|
|
|
|
239
|
0
|
0
|
|
|
|
|
return $self -> divide_euc($str) if $code eq 'euc';
|
240
|
0
|
0
|
|
|
|
|
return $self -> divide_sjis($str) if $code eq 'sjis';
|
241
|
|
|
|
|
|
|
}
|
242
|
|
|
|
|
|
|
# When you want to process it with EUC-JP disregarding the character-code declaration
|
243
|
|
|
|
|
|
|
# $aart -> divide_euc($str);
|
244
|
|
|
|
|
|
|
sub divide_euc {
|
245
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
246
|
0
|
|
|
|
|
|
my $str = shift;
|
247
|
|
|
|
|
|
|
|
248
|
0
|
|
|
|
|
|
my $esc = '[\x00-\x1F]';
|
249
|
0
|
|
|
|
|
|
my $oneBytes = '[\x20-\x7E]';
|
250
|
0
|
|
|
|
|
|
my $twoBytes1 = '\x8E[\xA1-\xDF]';
|
251
|
0
|
|
|
|
|
|
my $twoBytes2 = '[\xA1-\xFE][\xA1-\xFE]';
|
252
|
0
|
|
|
|
|
|
my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
|
253
|
|
|
|
|
|
|
|
254
|
0
|
|
|
|
|
|
$str =~ s/$esc//og;
|
255
|
0
|
|
|
|
|
|
my @array = $str =~ /$oneBytes|$twoBytes1|$twoBytes2|$threeBytes/og;
|
256
|
0
|
|
|
|
|
|
return @array;
|
257
|
|
|
|
|
|
|
}
|
258
|
|
|
|
|
|
|
# When you want to process it with Shift_JIS disregarding the character-code declaration
|
259
|
|
|
|
|
|
|
# $aart -> divide_sjis($str);
|
260
|
|
|
|
|
|
|
sub divide_sjis {
|
261
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
262
|
0
|
|
|
|
|
|
my $str = shift;
|
263
|
|
|
|
|
|
|
|
264
|
0
|
|
|
|
|
|
my $esc = '[\x00-\x1F]';
|
265
|
0
|
|
|
|
|
|
my $oneBytes = '[\x20-\x7E\xA1-\xDF]';
|
266
|
0
|
|
|
|
|
|
my $twoBytes1 = '[\x81-\x9F][\x40-\x7E]';
|
267
|
0
|
|
|
|
|
|
my $twoBytes2 = '[\xE0-\xEF][\x80-\xFC]';
|
268
|
|
|
|
|
|
|
|
269
|
0
|
|
|
|
|
|
$str =~ s/$esc//og;
|
270
|
0
|
|
|
|
|
|
my @array;
|
271
|
0
|
|
|
|
|
|
while($str) {
|
272
|
0
|
|
|
|
|
|
$str =~ s/(.)//;
|
273
|
0
|
|
|
|
|
|
my $tmp = $1;
|
274
|
|
|
|
|
|
|
|
275
|
0
|
0
|
|
|
|
|
if ($tmp =~ /$oneBytes/og) {
|
276
|
0
|
|
|
|
|
|
push @array , $tmp;
|
277
|
0
|
|
|
|
|
|
next;
|
278
|
|
|
|
|
|
|
}
|
279
|
0
|
|
|
|
|
|
$str =~ s/(.)//;
|
280
|
0
|
|
|
|
|
|
$tmp .= $1;
|
281
|
0
|
|
|
|
|
|
push @array , $tmp;
|
282
|
|
|
|
|
|
|
}
|
283
|
|
|
|
|
|
|
|
284
|
0
|
|
|
|
|
|
return @array;
|
285
|
|
|
|
|
|
|
}
|
286
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
287
|
|
|
|
|
|
|
# The character string that adds the adjustment dot is returned.
|
288
|
|
|
|
|
|
|
# $aart -> adjust($str_l, $str_r, position, $size);
|
289
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
290
|
|
|
|
|
|
|
sub adjust {
|
291
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
292
|
0
|
|
0
|
|
|
|
my $str_l = shift || q{};
|
293
|
0
|
|
0
|
|
|
|
my $str_r = shift || q{};
|
294
|
0
|
|
0
|
|
|
|
my $position = shift || 'L';
|
295
|
0
|
|
|
|
|
|
my $size = shift;
|
296
|
|
|
|
|
|
|
|
297
|
0
|
0
|
0
|
|
|
|
return $self -> adjust_right_euc($str_l, $str_r, $size) if $code eq 'euc' && $position eq 'R';
|
298
|
0
|
0
|
0
|
|
|
|
return $self -> adjust_left_euc($str_l, $str_r, $size) if $code eq 'euc' && $position eq 'L';
|
299
|
0
|
0
|
0
|
|
|
|
return $self -> adjust_right_sjis($str_l, $str_r, $size) if $code eq 'sjis' && $position eq 'R';
|
300
|
0
|
0
|
0
|
|
|
|
return $self -> adjust_left_sjis($str_l, $str_r, $size) if $code eq 'sjis' && $position eq 'L';
|
301
|
|
|
|
|
|
|
}
|
302
|
|
|
|
|
|
|
# When you want to process it with EUC-JP disregarding the character-code declaration and position 'R'.
|
303
|
|
|
|
|
|
|
# $aart -> adjust_right_euc($str_l, $str_r, $size);
|
304
|
|
|
|
|
|
|
sub adjust_right_euc {
|
305
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
306
|
0
|
|
0
|
|
|
|
my $str_l = shift || q{};
|
307
|
0
|
|
0
|
|
|
|
my $str_r = shift || q{};
|
308
|
0
|
|
|
|
|
|
my $size = shift;
|
309
|
0
|
|
|
|
|
|
my $count = $self -> calcu_euc("$str_l$str_r");
|
310
|
|
|
|
|
|
|
|
311
|
0
|
|
|
|
|
|
my $diff = $size - $count;
|
312
|
0
|
|
|
|
|
|
my $space = int( $diff/11 );
|
313
|
|
|
|
|
|
|
|
314
|
0
|
|
|
|
|
|
my $set2 = q{};
|
315
|
0
|
|
|
|
|
|
for (my $t = 0; $t < $space; $t ++) {
|
316
|
0
|
|
|
|
|
|
$diff -= 11;
|
317
|
0
|
|
|
|
|
|
$set2 .= "\xa1\xa1";
|
318
|
|
|
|
|
|
|
}
|
319
|
|
|
|
|
|
|
|
320
|
0
|
0
|
|
|
|
|
if ($diff == 1) {
|
321
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \xa1\xa1 \./) {}
|
322
|
0
|
|
|
|
|
|
else { $set2 =~ s/\xa1\xa1$/\.\.\.\./; }
|
323
|
|
|
|
|
|
|
}
|
324
|
0
|
0
|
|
|
|
|
if ($diff == 2) { $set2 =~ s/\xa1\xa1\xa1\xa1$/ \xa1\xa1 \./ }
|
|
0
|
|
|
|
|
|
|
325
|
0
|
0
|
|
|
|
|
if ($diff == 3) { $set2 .= '.' }
|
|
0
|
|
|
|
|
|
|
326
|
0
|
0
|
|
|
|
|
if ($diff == 4) {
|
327
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 /) {}
|
328
|
0
|
|
|
|
|
|
else { $set2 =~ s/\xa1\xa1$/\.\.\.\.\./; }
|
329
|
|
|
|
|
|
|
}
|
330
|
0
|
0
|
|
|
|
|
if ($diff == 5) { $set2 .= ' ' }
|
|
0
|
|
|
|
|
|
|
331
|
0
|
0
|
|
|
|
|
if ($diff == 6) {
|
332
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \xa1\xa1 \. /) {}
|
333
|
0
|
|
|
|
|
|
else { $set2 .= '..' }
|
334
|
|
|
|
|
|
|
}
|
335
|
0
|
0
|
|
|
|
|
if ($diff == 7) { $set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \./ }
|
|
0
|
|
|
|
|
|
|
336
|
0
|
0
|
|
|
|
|
if ($diff == 8) { $set2 .= ' .' }
|
|
0
|
|
|
|
|
|
|
337
|
0
|
0
|
|
|
|
|
if ($diff == 9) {
|
338
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
|
339
|
0
|
|
|
|
|
|
else { $set2 .= '...' }
|
340
|
|
|
|
|
|
|
}
|
341
|
0
|
0
|
|
|
|
|
if ($diff == 10) { $set2 =~ s/\xa1\xa1\xa1\xa1$/\xa1\xa1 \xa1\xa1 / }
|
|
0
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
|
343
|
0
|
|
|
|
|
|
return "$str_l$set2$str_r";
|
344
|
|
|
|
|
|
|
}
|
345
|
|
|
|
|
|
|
# When you want to process it with EUC-JP disregarding the character-code declaration and position 'L'.
|
346
|
|
|
|
|
|
|
# $aart -> adjust_left_euc($str_l, $str_r, $size);
|
347
|
|
|
|
|
|
|
sub adjust_left_euc {
|
348
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
349
|
0
|
|
|
|
|
|
my $str_l = join q{}, $self -> divide_euc(shift);
|
350
|
0
|
|
|
|
|
|
my $str_r = join q{}, $self -> divide_euc(shift);
|
351
|
0
|
|
|
|
|
|
my $size = shift;
|
352
|
|
|
|
|
|
|
|
353
|
0
|
|
|
|
|
|
my $count = $self -> calcu_euc("$str_l$str_r");
|
354
|
0
|
|
|
|
|
|
my $diff = $size - $count;
|
355
|
0
|
|
|
|
|
|
my $space = int( $diff/11 );
|
356
|
|
|
|
|
|
|
|
357
|
0
|
|
|
|
|
|
my $set2 = q{};
|
358
|
0
|
|
|
|
|
|
for (my $t = 0; $t < $space; $t ++) {
|
359
|
0
|
|
|
|
|
|
$diff -= 11;
|
360
|
0
|
|
|
|
|
|
$set2 .= "\xa1\xa1";
|
361
|
|
|
|
|
|
|
}
|
362
|
0
|
0
|
|
|
|
|
if ($diff == 1) {
|
363
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1/\. \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
|
364
|
0
|
|
|
|
|
|
else { $set2 =~ s/^\xa1\xa1/\.\.\.\./; }
|
365
|
|
|
|
|
|
|
}
|
366
|
0
|
0
|
|
|
|
|
if ($diff == 2) { $set2 =~ s/^\xa1\xa1\xa1\xa1/\. \xa1\xa1 / }
|
|
0
|
|
|
|
|
|
|
367
|
0
|
0
|
|
|
|
|
if ($diff == 3) { $set2 = '.'.$set2 }
|
|
0
|
|
|
|
|
|
|
368
|
0
|
0
|
|
|
|
|
if ($diff == 4) {
|
369
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1/ \xa1\xa1 \xa1\xa1 /) {}
|
370
|
0
|
|
|
|
|
|
else { $set2 =~ s/^\xa1\xa1/\.\.\.\.\./ }
|
371
|
|
|
|
|
|
|
}
|
372
|
0
|
0
|
|
|
|
|
if ($diff == 5) { $set2 = ' '.$set2 }
|
|
0
|
|
|
|
|
|
|
373
|
0
|
0
|
|
|
|
|
if ($diff == 6) {
|
374
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1/ \. \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
|
375
|
0
|
|
|
|
|
|
else { $set2 = '..'.$set2 }
|
376
|
|
|
|
|
|
|
}
|
377
|
0
|
0
|
|
|
|
|
if ($diff == 7) { $set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1/\. \xa1\xa1 \xa1\xa1 / }
|
|
0
|
|
|
|
|
|
|
378
|
0
|
0
|
|
|
|
|
if ($diff == 8) { $set2 = '. '.$set2 }
|
|
0
|
|
|
|
|
|
|
379
|
0
|
0
|
|
|
|
|
if ($diff == 9) {
|
380
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1/ \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
|
381
|
0
|
|
|
|
|
|
else { $set2 = '...'.$set2 }
|
382
|
|
|
|
|
|
|
}
|
383
|
0
|
0
|
|
|
|
|
if ($diff == 10) { $set2 =~ s/^\xa1\xa1\xa1\xa1/\xa1\xa1 \xa1\xa1 / }
|
|
0
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
|
385
|
0
|
|
|
|
|
|
return "$str_l$set2$str_r";
|
386
|
|
|
|
|
|
|
}
|
387
|
|
|
|
|
|
|
# When you want to process it with Shift_JIS disregarding the character-code declaration and position 'R'.
|
388
|
|
|
|
|
|
|
# $aart -> adjust_right_sjis($str_l, $str_r, $size);
|
389
|
|
|
|
|
|
|
sub adjust_right_sjis {
|
390
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
391
|
0
|
|
0
|
|
|
|
my $str_l = shift || q{};
|
392
|
0
|
|
0
|
|
|
|
my $str_r = shift || q{};
|
393
|
0
|
|
|
|
|
|
my $size = shift;
|
394
|
0
|
|
|
|
|
|
my $count = $self -> calcu_sjis("$str_l$str_r");
|
395
|
|
|
|
|
|
|
|
396
|
0
|
|
|
|
|
|
my $diff = $size - $count;
|
397
|
0
|
|
|
|
|
|
my $space = int( $diff/11 );
|
398
|
|
|
|
|
|
|
|
399
|
0
|
|
|
|
|
|
my $set2 = q{};
|
400
|
0
|
|
|
|
|
|
for (my $t = 0; $t < $space; $t ++) {
|
401
|
0
|
|
|
|
|
|
$diff -= 11;
|
402
|
0
|
|
|
|
|
|
$set2 .= "\x81\x40";
|
403
|
|
|
|
|
|
|
}
|
404
|
|
|
|
|
|
|
|
405
|
0
|
0
|
|
|
|
|
if ($diff == 1) {
|
406
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \x81\x40 \./) {}
|
407
|
0
|
|
|
|
|
|
else { $set2 =~ s/\x81\x40$/\.\.\.\./; }
|
408
|
|
|
|
|
|
|
}
|
409
|
0
|
0
|
|
|
|
|
if ($diff == 2) { $set2 =~ s/\x81\x40\x81\x40$/ \x81\x40 \./ }
|
|
0
|
|
|
|
|
|
|
410
|
0
|
0
|
|
|
|
|
if ($diff == 3) { $set2 .= '.' }
|
|
0
|
|
|
|
|
|
|
411
|
0
|
0
|
|
|
|
|
if ($diff == 4) {
|
412
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 /) {}
|
413
|
0
|
|
|
|
|
|
else { $set2 =~ s/\x81\x40$/\.\.\.\.\./; }
|
414
|
|
|
|
|
|
|
}
|
415
|
0
|
0
|
|
|
|
|
if ($diff == 5) { $set2 .= ' ' }
|
|
0
|
|
|
|
|
|
|
416
|
0
|
0
|
|
|
|
|
if ($diff == 6) {
|
417
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \x81\x40 \. /) {}
|
418
|
0
|
|
|
|
|
|
else { $set2 .= '..' }
|
419
|
|
|
|
|
|
|
}
|
420
|
0
|
0
|
|
|
|
|
if ($diff == 7) { $set2 =~ s/\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \./ }
|
|
0
|
|
|
|
|
|
|
421
|
0
|
0
|
|
|
|
|
if ($diff == 8) { $set2 .= ' .' }
|
|
0
|
|
|
|
|
|
|
422
|
0
|
0
|
|
|
|
|
if ($diff == 9) {
|
423
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/\x81\x40\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \x81\x40 /) {}
|
424
|
0
|
|
|
|
|
|
else { $set2 .= '...' }
|
425
|
|
|
|
|
|
|
}
|
426
|
0
|
0
|
|
|
|
|
if ($diff == 10) { $set2 =~ s/\x81\x40\x81\x40$/\x81\x40 \x81\x40 / }
|
|
0
|
|
|
|
|
|
|
427
|
|
|
|
|
|
|
|
428
|
0
|
|
|
|
|
|
return "$str_l$set2$str_r";
|
429
|
|
|
|
|
|
|
}
|
430
|
|
|
|
|
|
|
# When you want to process it with Shift_JIS disregarding the character-code declaration and position 'L'.
|
431
|
|
|
|
|
|
|
# $aart -> adjust_left_sjis($str_l, $str_r, $size);
|
432
|
|
|
|
|
|
|
sub adjust_left_sjis {
|
433
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
434
|
0
|
|
0
|
|
|
|
my $str_l = shift || q{};
|
435
|
0
|
|
0
|
|
|
|
my $str_r = shift || q{};
|
436
|
0
|
|
|
|
|
|
my $size = shift;
|
437
|
|
|
|
|
|
|
|
438
|
0
|
|
|
|
|
|
my $count = $self -> calcu_sjis("$str_l$str_r");
|
439
|
0
|
|
|
|
|
|
my $diff = $size - $count;
|
440
|
0
|
|
|
|
|
|
my $space = int( $diff/11 );
|
441
|
|
|
|
|
|
|
|
442
|
0
|
|
|
|
|
|
my $set2 = q{};
|
443
|
0
|
|
|
|
|
|
for (my $t = 0; $t < $space; $t ++) {
|
444
|
0
|
|
|
|
|
|
$diff -= 11;
|
445
|
0
|
|
|
|
|
|
$set2 .= "\x81\x40";
|
446
|
|
|
|
|
|
|
}
|
447
|
0
|
0
|
|
|
|
|
if ($diff == 1) {
|
448
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40/\. \x81\x40 \x81\x40 \x81\x40 /) {}
|
449
|
0
|
|
|
|
|
|
else { $set2 =~ s/^\x81\x40/\.\.\.\./; }
|
450
|
|
|
|
|
|
|
}
|
451
|
0
|
0
|
|
|
|
|
if ($diff == 2) { $set2 =~ s/^\x81\x40\x81\x40/\. \x81\x40 / }
|
|
0
|
|
|
|
|
|
|
452
|
0
|
0
|
|
|
|
|
if ($diff == 3) { $set2 = '.'.$set2 }
|
|
0
|
|
|
|
|
|
|
453
|
0
|
0
|
|
|
|
|
if ($diff == 4) {
|
454
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40/ \x81\x40 \x81\x40 /) {}
|
455
|
0
|
|
|
|
|
|
else { $set2 =~ s/^\x81\x40/\.\.\.\.\./ }
|
456
|
|
|
|
|
|
|
}
|
457
|
0
|
0
|
|
|
|
|
if ($diff == 5) { $set2 = ' '.$set2 }
|
|
0
|
|
|
|
|
|
|
458
|
0
|
0
|
|
|
|
|
if ($diff == 6) {
|
459
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40/ \. \x81\x40 \x81\x40 \x81\x40 /) {}
|
460
|
0
|
|
|
|
|
|
else { $set2 = '..'.$set2 }
|
461
|
|
|
|
|
|
|
}
|
462
|
0
|
0
|
|
|
|
|
if ($diff == 7) { $set2 =~ s/^\x81\x40\x81\x40\x81\x40/\. \x81\x40 \x81\x40 / }
|
|
0
|
|
|
|
|
|
|
463
|
0
|
0
|
|
|
|
|
if ($diff == 8) { $set2 = '. '.$set2 }
|
|
0
|
|
|
|
|
|
|
464
|
0
|
0
|
|
|
|
|
if ($diff == 9) {
|
465
|
0
|
0
|
|
|
|
|
if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40\x81\x40/ \x81\x40 \x81\x40 \x81\x40 /) {}
|
466
|
0
|
|
|
|
|
|
else { $set2 = '...'.$set2 }
|
467
|
|
|
|
|
|
|
}
|
468
|
0
|
0
|
|
|
|
|
if ($diff == 10) { $set2 =~ s/^\x81\x40\x81\x40/\x81\x40 \x81\x40 / }
|
|
0
|
|
|
|
|
|
|
469
|
|
|
|
|
|
|
|
470
|
0
|
|
|
|
|
|
return "$str_l$set2$str_r";
|
471
|
|
|
|
|
|
|
}
|
472
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
473
|
|
|
|
|
|
|
# The number of shorter dots where the character string of the array becomes complete is returned.
|
474
|
|
|
|
|
|
|
# $aart -> shorter(@array);
|
475
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
476
|
|
|
|
|
|
|
sub shorter {
|
477
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
478
|
0
|
|
|
|
|
|
my @array = @_;
|
479
|
|
|
|
|
|
|
|
480
|
0
|
0
|
|
|
|
|
return $self -> shorter_euc(@array) if $code eq 'euc';
|
481
|
0
|
0
|
|
|
|
|
return $self -> shorter_sjis(@array) if $code eq 'sjis';
|
482
|
|
|
|
|
|
|
}
|
483
|
|
|
|
|
|
|
# When you want to process it with EUC-JP disregarding the character-code declaration.
|
484
|
|
|
|
|
|
|
# $aart -> shorter_euc(@array);
|
485
|
|
|
|
|
|
|
sub shorter_euc {
|
486
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
487
|
0
|
|
|
|
|
|
my @array = @_;
|
488
|
0
|
|
|
|
|
|
my $fit = 0;
|
489
|
|
|
|
|
|
|
|
490
|
0
|
|
|
|
|
|
foreach my $buf (@array) {
|
491
|
0
|
|
|
|
|
|
my $set = $self -> calcu_euc($buf);
|
492
|
0
|
0
|
|
|
|
|
next if $fit >= $set;
|
493
|
0
|
|
|
|
|
|
$fit = $set;
|
494
|
|
|
|
|
|
|
}
|
495
|
|
|
|
|
|
|
|
496
|
0
|
|
|
|
|
|
while (1) {
|
497
|
0
|
|
|
|
|
|
my $flag = 0;
|
498
|
0
|
|
|
|
|
|
foreach my $set (@array) {
|
499
|
0
|
|
|
|
|
|
my $temp = $self -> adjust_right_euc($set,q{},$fit);
|
500
|
0
|
|
|
|
|
|
my $temp2 = $self -> calcu_euc($temp);
|
501
|
0
|
0
|
|
|
|
|
next if $fit == $temp2;
|
502
|
0
|
|
|
|
|
|
$flag = 1;
|
503
|
0
|
|
|
|
|
|
$fit ++;
|
504
|
0
|
|
|
|
|
|
last;
|
505
|
|
|
|
|
|
|
}
|
506
|
0
|
0
|
|
|
|
|
last unless $flag;
|
507
|
|
|
|
|
|
|
}
|
508
|
|
|
|
|
|
|
|
509
|
0
|
|
|
|
|
|
return $fit;
|
510
|
|
|
|
|
|
|
}
|
511
|
|
|
|
|
|
|
# When you want to process it with Shift_JIS disregarding the character-code declaration.
|
512
|
|
|
|
|
|
|
# $aart -> shorter_sjis(@array);
|
513
|
|
|
|
|
|
|
sub shorter_sjis {
|
514
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
515
|
0
|
|
|
|
|
|
my @array = @_;
|
516
|
0
|
|
|
|
|
|
my $fit = 0;
|
517
|
|
|
|
|
|
|
|
518
|
0
|
|
|
|
|
|
foreach my $buf (@array) {
|
519
|
0
|
|
|
|
|
|
my $set = $self -> calcu_sjis($buf);
|
520
|
0
|
0
|
|
|
|
|
next if $fit >= $set;
|
521
|
0
|
|
|
|
|
|
$fit = $set;
|
522
|
|
|
|
|
|
|
}
|
523
|
|
|
|
|
|
|
|
524
|
0
|
|
|
|
|
|
while (1) {
|
525
|
0
|
|
|
|
|
|
my $flag = 0;
|
526
|
0
|
|
|
|
|
|
foreach my $set (@array) {
|
527
|
0
|
|
|
|
|
|
my $temp = $self -> adjust_right_sjis($set,q{},$fit);
|
528
|
0
|
|
|
|
|
|
my $temp2 = $self -> calcu_sjis($temp);
|
529
|
0
|
0
|
|
|
|
|
next if $fit == $temp2;
|
530
|
0
|
|
|
|
|
|
$flag = 1;
|
531
|
0
|
|
|
|
|
|
$fit ++;
|
532
|
0
|
|
|
|
|
|
last;
|
533
|
|
|
|
|
|
|
}
|
534
|
0
|
0
|
|
|
|
|
last unless $flag;
|
535
|
|
|
|
|
|
|
}
|
536
|
|
|
|
|
|
|
|
537
|
0
|
|
|
|
|
|
return $fit;
|
538
|
|
|
|
|
|
|
}
|
539
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
540
|
|
|
|
|
|
|
# The number of shorter dots that hits multiples of the number specified that
|
541
|
|
|
|
|
|
|
# the character string of the array becomes complete is returned.
|
542
|
|
|
|
|
|
|
# ($minimun, $magnification) = $aart -> shorter_multiple($width, \@arrayL, \@arrayR);
|
543
|
|
|
|
|
|
|
#-------------------------------------------------------------------------------
|
544
|
|
|
|
|
|
|
sub shorter_multiple {
|
545
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
546
|
0
|
|
|
|
|
|
my ($number, $left, $right) = @_;
|
547
|
0
|
|
|
|
|
|
my @arrayL = @$left;
|
548
|
0
|
|
|
|
|
|
my @arrayR = @$right;
|
549
|
|
|
|
|
|
|
|
550
|
0
|
0
|
|
|
|
|
return $self -> shorter_multiple_euc($number, \@$left, \@$right) if $code eq 'euc';
|
551
|
0
|
0
|
|
|
|
|
return $self -> shorter_multiple_sjis($number, \@$left, \@$right) if $code eq 'sjis';
|
552
|
|
|
|
|
|
|
}
|
553
|
|
|
|
|
|
|
# When you want to process it with EUC-JP disregarding the character-code declaration.
|
554
|
|
|
|
|
|
|
# ($minimun, $magnification) = $aart -> shorter_multiple_euc($width, \@arrayL, \@arrayR);
|
555
|
|
|
|
|
|
|
sub shorter_multiple_euc() {
|
556
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
557
|
0
|
|
|
|
|
|
my ($number, $left, $right) = @_;
|
558
|
0
|
|
|
|
|
|
my @arrayL = @$left;
|
559
|
0
|
|
|
|
|
|
my @arrayR = @$right;
|
560
|
|
|
|
|
|
|
|
561
|
0
|
|
|
|
|
|
my $width = $self -> shorter_euc(@arrayL) + $self -> shorter_euc(@arrayR);
|
562
|
0
|
|
|
|
|
|
my $multiple = $width / $number;
|
563
|
0
|
0
|
|
|
|
|
my $shorter = ( $multiple - int($multiple) ) ? $number * ( int($multiple) + 1) : $number * $multiple;
|
564
|
|
|
|
|
|
|
|
565
|
0
|
|
|
|
|
|
while (1) {
|
566
|
0
|
|
|
|
|
|
my $flag = 0;
|
567
|
0
|
|
|
|
|
|
for (my $i = 0; $i < @arrayL; $i ++) {
|
568
|
0
|
|
|
|
|
|
my $temp = $self -> adjust_right_euc($arrayL[$i], $arrayR[$i], $shorter);
|
569
|
0
|
|
|
|
|
|
my $temp2 = $self -> calcu_euc( $temp );
|
570
|
0
|
0
|
|
|
|
|
next if $shorter == $temp2;
|
571
|
0
|
|
|
|
|
|
$shorter += $number;
|
572
|
0
|
|
|
|
|
|
$flag = 1;
|
573
|
0
|
|
|
|
|
|
last;
|
574
|
|
|
|
|
|
|
}
|
575
|
0
|
0
|
|
|
|
|
last unless $flag;
|
576
|
|
|
|
|
|
|
}
|
577
|
|
|
|
|
|
|
|
578
|
0
|
|
|
|
|
|
return $shorter, $shorter / $number;
|
579
|
|
|
|
|
|
|
}
|
580
|
|
|
|
|
|
|
# When you want to process it with Shift_JIS disregarding the character-code declaration.
|
581
|
|
|
|
|
|
|
# ($minimun, $magnification) = $aart -> shorter_multiple_sjis($width, \@arrayL, \@arrayR);
|
582
|
|
|
|
|
|
|
sub shorter_multiple_sjis() {
|
583
|
0
|
|
|
0
|
0
|
|
my $self = shift;
|
584
|
0
|
|
|
|
|
|
my ($number, $left, $right) = @_;
|
585
|
0
|
|
|
|
|
|
my @arrayL = @$left;
|
586
|
0
|
|
|
|
|
|
my @arrayR = @$right;
|
587
|
|
|
|
|
|
|
|
588
|
0
|
|
|
|
|
|
my $width = $self -> shorter_sjis(@arrayL) + $self -> shorter_sjis(@arrayR);
|
589
|
0
|
|
|
|
|
|
my $multiple = $width / $number;
|
590
|
0
|
0
|
|
|
|
|
my $shorter = ( $multiple - int($multiple) ) ? $number * ( int($multiple) + 1) : $number * $multiple;
|
591
|
|
|
|
|
|
|
|
592
|
0
|
|
|
|
|
|
while (1) {
|
593
|
0
|
|
|
|
|
|
my $flag = 0;
|
594
|
0
|
|
|
|
|
|
for (my $i = 0; $i < @arrayL; $i ++) {
|
595
|
0
|
|
|
|
|
|
my $temp = $self -> adjust_right_sjis($arrayL[$i], $arrayR[$i], $shorter);
|
596
|
0
|
|
|
|
|
|
my $temp2 = $self -> calcu_sjis( $temp );
|
597
|
0
|
0
|
|
|
|
|
next if $shorter == $temp2;
|
598
|
0
|
|
|
|
|
|
$shorter += $number;
|
599
|
0
|
|
|
|
|
|
$flag = 1;
|
600
|
0
|
|
|
|
|
|
last;
|
601
|
|
|
|
|
|
|
}
|
602
|
0
|
0
|
|
|
|
|
last unless $flag;
|
603
|
|
|
|
|
|
|
}
|
604
|
|
|
|
|
|
|
|
605
|
0
|
|
|
|
|
|
return $shorter, $shorter / $number;
|
606
|
|
|
|
|
|
|
}
|
607
|
|
|
|
|
|
|
|
608
|
|
|
|
|
|
|
1;
|
609
|
|
|
|
|
|
|
__END__
|