line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Text::Greeking::zh_TW; |
2
|
3
|
|
|
3
|
|
67697
|
use common::sense 2.02; |
|
3
|
|
|
|
|
81
|
|
|
3
|
|
|
|
|
22
|
|
3
|
3
|
|
|
3
|
|
165
|
use 5.008; |
|
3
|
|
|
|
|
9
|
|
|
3
|
|
|
|
|
106
|
|
4
|
3
|
|
|
3
|
|
1963
|
use utf8; |
|
3
|
|
|
|
|
16
|
|
|
3
|
|
|
|
|
16
|
|
5
|
|
|
|
|
|
|
|
6
|
3
|
|
|
3
|
|
99
|
use List::Util qw(shuffle); |
|
3
|
|
|
|
|
5
|
|
|
3
|
|
|
|
|
2030
|
|
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
our $VERSION = '1.0'; |
9
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
sub new { |
11
|
2
|
|
|
2
|
1
|
26
|
my $class =shift; |
12
|
2
|
|
|
|
|
11
|
my $self = bless {}, $class; |
13
|
2
|
|
|
|
|
83
|
srand; |
14
|
2
|
|
|
|
|
10
|
$self->init; |
15
|
|
|
|
|
|
|
} |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
sub init { |
18
|
2
|
|
|
2
|
0
|
13
|
$_[0]->paragraphs(2,8); |
19
|
2
|
|
|
|
|
12
|
$_[0]->sentences(2,8); |
20
|
2
|
|
|
|
|
11
|
$_[0]->words(5,15); |
21
|
2
|
|
|
|
|
9
|
$_[0]; |
22
|
|
|
|
|
|
|
} |
23
|
|
|
|
|
|
|
|
24
|
3
|
|
|
3
|
1
|
23
|
sub paragraphs { $_[0]->{paragraphs} = [ $_[1], $_[2] ] } |
25
|
3
|
|
|
3
|
1
|
14
|
sub sentences { $_[0]->{sentences} = [ $_[1], $_[2] ] } |
26
|
3
|
|
|
3
|
0
|
16
|
sub words { $_[0]->{words} = [ $_[1], $_[2] ] } |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
sub generate { |
29
|
2
|
|
|
2
|
1
|
11
|
my $self = shift; |
30
|
2
|
|
|
|
|
9
|
my($paramin,$paramax) = @{$self->{paragraphs}}; |
|
2
|
|
|
|
|
10
|
|
31
|
2
|
|
|
|
|
4
|
my($sentmin,$sentmax) = @{$self->{sentences}}; |
|
2
|
|
|
|
|
12
|
|
32
|
2
|
|
|
|
|
12
|
my $pcount = int(rand($paramax-$paramin+1)+$paramin); |
33
|
2
|
|
|
|
|
4
|
my $out = ""; |
34
|
2
|
|
|
|
|
13
|
for (my $x=0; $x < $pcount; $x++) { |
35
|
11
|
|
|
|
|
28
|
my $scount = int(rand($sentmax-$sentmin+1)+$sentmin); |
36
|
11
|
|
|
|
|
30
|
for (my $y=0; $y < $scount; $y++) { |
37
|
70
|
|
|
|
|
298
|
$out .= random_sentence(); |
38
|
|
|
|
|
|
|
} |
39
|
11
|
|
|
|
|
37
|
$out .= "\n\n"; |
40
|
|
|
|
|
|
|
} |
41
|
2
|
|
|
|
|
22
|
$out; |
42
|
|
|
|
|
|
|
} |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
sub _generate { |
45
|
18
|
|
|
18
|
|
42
|
my $template = corpus(); |
46
|
3
|
|
|
3
|
|
14
|
$template =~ s{ \p{Han} }{ random_word() }xegs; |
|
3
|
|
|
|
|
5
|
|
|
3
|
|
|
|
|
37
|
|
|
18
|
|
|
|
|
100
|
|
|
2481
|
|
|
|
|
3987
|
|
47
|
18
|
|
|
|
|
525
|
return $template; |
48
|
|
|
|
|
|
|
} |
49
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
{ |
51
|
|
|
|
|
|
|
my @han = (); |
52
|
|
|
|
|
|
|
sub random_word { |
53
|
2481
|
100
|
|
2481
|
0
|
4870
|
unless (@han) { |
54
|
18
|
|
|
|
|
53
|
my @char = split "", corpus(); |
55
|
18
|
|
|
|
|
3073
|
@han = shuffle grep /\p{Han}/, @char; |
56
|
|
|
|
|
|
|
} |
57
|
|
|
|
|
|
|
shift @han |
58
|
2481
|
|
|
|
|
7230
|
} |
59
|
|
|
|
|
|
|
|
60
|
|
|
|
|
|
|
my @text = (); |
61
|
|
|
|
|
|
|
sub random_paragraph { |
62
|
24
|
100
|
|
24
|
0
|
52
|
unless (@text) { |
63
|
18
|
|
|
|
|
33
|
@text = shuffle split /\n+/, _generate(); |
64
|
|
|
|
|
|
|
} |
65
|
24
|
|
|
|
|
268
|
shift @text; |
66
|
|
|
|
|
|
|
} |
67
|
|
|
|
|
|
|
|
68
|
|
|
|
|
|
|
my @sentence = (); |
69
|
|
|
|
|
|
|
sub random_sentence { |
70
|
70
|
100
|
|
70
|
0
|
138
|
unless (@sentence) { |
71
|
24
|
|
|
|
|
41
|
@sentence = split /。|?/, random_paragraph() |
72
|
|
|
|
|
|
|
} |
73
|
70
|
|
33
|
|
|
212
|
(shift(@sentence) || random_sentence() ) . random_punct(); |
74
|
|
|
|
|
|
|
} |
75
|
|
|
|
|
|
|
|
76
|
|
|
|
|
|
|
sub random_punct { |
77
|
70
|
|
|
70
|
0
|
110
|
my $r = int(rand(20)); |
78
|
70
|
100
|
|
|
|
185
|
if ($r == 1) { |
|
|
100
|
|
|
|
|
|
79
|
6
|
|
|
|
|
32
|
"!" |
80
|
|
|
|
|
|
|
} |
81
|
|
|
|
|
|
|
elsif ($r == 2) { |
82
|
6
|
|
|
|
|
26
|
"?" |
83
|
|
|
|
|
|
|
} |
84
|
|
|
|
|
|
|
else { |
85
|
58
|
|
|
|
|
304
|
"。" |
86
|
|
|
|
|
|
|
} |
87
|
|
|
|
|
|
|
|
88
|
|
|
|
|
|
|
} |
89
|
|
|
|
|
|
|
} |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
my $corpus; |
92
|
|
|
|
|
|
|
sub add_source { |
93
|
1
|
|
|
1
|
1
|
6
|
my ($self, $source) = @_; |
94
|
1
|
50
|
|
|
|
5
|
if (ref $source) { |
95
|
0
|
|
|
|
|
0
|
warn "err - source sould be a scalar."; |
96
|
0
|
|
|
|
|
0
|
return; |
97
|
|
|
|
|
|
|
} |
98
|
|
|
|
|
|
|
|
99
|
1
|
|
|
|
|
3
|
$corpus .= $source; |
100
|
1
|
|
|
|
|
4
|
return $self; |
101
|
|
|
|
|
|
|
} |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
# lukhnos.org |
104
|
|
|
|
|
|
|
sub corpus { |
105
|
36
|
100
|
|
36
|
0
|
60
|
if ($corpus) { |
106
|
34
|
|
|
|
|
369
|
return $corpus; |
107
|
|
|
|
|
|
|
} else { |
108
|
2
|
|
|
|
|
527
|
return <
|
109
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
她終於有勇氣重新開箱,拾出當年所封存的那些記憶。只不過那也是最後一次,那些記憶在開箱之後,不再散發香水的味道;所拾出的東西,也就直接進了垃圾袋。 |
111
|
|
|
|
|
|
|
|
112
|
|
|
|
|
|
|
她看著垃圾車的壓縮機輾壓過那些她曾經珍惜過的曾經,然後看著垃圾車駛離。「就這樣,」她想。 |
113
|
|
|
|
|
|
|
|
114
|
|
|
|
|
|
|
因為那一年某堂粗淺的人類學課程,讓她心生一計,開始買一個又一個的箱子,把那些碰觸不得的潰爛和難堪,給一一封存起來。離別的痛苦,伴隨著的是碰不得的屍體:生存與死亡的界限,生食與熟食,潔淨與塵垢。葬禮與守喪的時間延遞,是一種轉化的過程:當不潔的屍身再度化為了塵土,不可碰觸的終將化為了無所謂的──可以如清掃家門般將之一掃而出。 |
115
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
她花了整整一年的時間,把那些曾經有過的曾經給一一打包、整理、刷洗、更衣,她一邊整理一邊自言自語,哪些是她的初次、她的愚念、她的痴心、她的自甘墮落。來來往往這麼多年,她必須精心計算,購足相當數量的箱子、膠布、標籤紙,那些不可能再穿的衣服也得一一送洗、折疊、包裝。她編目,用圖書館員的耐心一一貼上標籤,空出架位,測量每件物品的大小──用了一半的香水瓶、一件毛衣、一本書、一張大頭照、一張小紙條、兩片CD、一盒太陽眼鏡…… 曾經她一度想將之一一整理販售,但是想到這世界之小,這些物品未來的主人將來說不定碰到原主,或者就只是那些人會在拍賣網站上看到。她雖然復仇心重,卻還是對散心大拍賣這種事有所保留。 |
117
|
|
|
|
|
|
|
|
118
|
|
|
|
|
|
|
全部封箱完的那一天,她完全崩潰,累倒在床上,高燒了整整兩天。 |
119
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
然後這一切都結束了。至少,暫時如此。 |
121
|
|
|
|
|
|
|
|
122
|
|
|
|
|
|
|
那幾年中,箱子就放在她的床下。她家人以為是學生時代的筆記書本,不曾多問。起先她還有睡在回憶上的感覺,之後她搬家、換工作,完完全全與箱子的世界分離了開來,也避開所有重新和那世界回復聯結的可能。不聯絡、不寫信、不和任何可能碰觸到箱子世界的人往來。稍微一點點可能觸及的預感(她這幾年因此嗅覺變得無比敏銳),就立刻送入隱形或擋駕名單。 |
123
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
只有在很後來,當她開始想要做更遠距離的移動時,才又突然想起那些箱子的存在。那些丟不掉搬不走的掛念,任何一個箱子都是一條連往過去的通道。那些被貼上封條的通道不會讓她陷落,她感到安全,然而她也不確定她是否哪天會有勇氣,重新開箱啟動這一切,再次於經驗的記憶中走一遭。 |
125
|
|
|
|
|
|
|
|
126
|
|
|
|
|
|
|
一直到了那一天。 |
127
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
她本來還想再拍張照片的。所謂符號的記憶,所謂的牌位:咒文或碑文,如一個指標般,指向那曾經存在的實體和全部。當一切身體都消逝,還有那符號可以喚起曾經存在的事實。所謂的記憶。然而那一天她發現了這記憶的弔詭:如同照片提醒了箱子的曾經存在,她似乎也可以將照片放置在她心中,用那照片的曾經存在,來指向那些指向了箱子曾經存在的照片。既然如此,拍照與否,又有什麼差別? |
129
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
用刀片將膠布拆開,一一拾起那箱子中的物品時,她突然覺得,她已經和這些一點關係都沒有了──甚至不再是「距離已經很遙遠很遙遠」。距離:兩個實體間存在的空間關係。沒有關係:就連距離也不再存在的事實。沒有了距離也就不再感受到遙遠,那些如深淵般的通道裡傳來的微弱聲響也消失了。於是同樣也沒有了回頭:那稱作這一切起點的單一事件,已經消失在意識的地平面上。 |
131
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
她來到了經驗的新島嶼。 |
133
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
突然之間,那些放在她房間裡的一個個箱子,變成了外來的異物,路邊的灰塵。 |
135
|
|
|
|
|
|
|
|
136
|
|
|
|
|
|
|
開始丟棄那些箱子。不,這並不是否認。否認一件事物的前提是事物的存在。奇異的是她在丟棄之後,竟然得以開口說話。所有過去那些潰爛的難堪的不潔的,所有的恥辱和屈辱和自以為是,突然之間變成可以說的事情。那不只是因為她自己的經驗,或者,毋寧說,那已經不再只是經驗。個人的生命的經驗,隱沒銷融進入一個更廣闊無垠的核當中,那東西不需要任何被貼上封條的通道,也能夠被觸及到。 |
137
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
她自己的故事已經變得不是那麼無關緊要了,她想,隱沒進那無垠的才是。因為知道那無垠的存在,她突然覺得如同被釋放了一般。 |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
第二天的清醒也因此變得如此值得期待了起來。她開始想獨自說說那隱沒帶下的無垠的事。 |
141
|
|
|
|
|
|
|
|
142
|
|
|
|
|
|
|
CORPUS |
143
|
|
|
|
|
|
|
} |
144
|
|
|
|
|
|
|
} |
145
|
|
|
|
|
|
|
|
146
|
|
|
|
|
|
|
1; # Magic true value required at end of module |
147
|
|
|
|
|
|
|
__END__ |