e99ec255 |
1 | #!/usr/bin/perl |
2 | # Censor filter. |
3 | # Copyright 2002 by Joey Hess under the terms of the GNU GPL. |
4 | |
5 | # Yes, this program is self-modifying code, if you want it to be. |
6 | if (exists $ENV{ADD_WORD}) { |
7 | open(IN, $0) || die "cannot read myself"; |
8 | @lines=<IN>; |
9 | close IN; |
10 | open OUT, ">$0" || die "cannot write myself"; |
11 | for (@lines) { |
12 | print OUT $_; |
13 | if (/^__DATA__\n$/) { |
14 | open(DATAOUT, "|sort|uniq|column >> $0"); |
15 | $ENV{ADD_WORD} =~ y/n-za-m/a-z/; |
16 | print DATAOUT "$ENV{ADD_WORD}\n"; |
17 | print DATAOUT join("\n", |
18 | map { chomp; split ' ', $_ } <DATA>); |
19 | close DATAOUT; |
20 | exit; |
21 | } |
22 | } |
23 | } |
24 | |
25 | $censored = join("|", reverse sort { $a cmp $b } |
26 | grep { length $_ } |
27 | map { chomp; y/a-z/n-za-m/; split ' ', $_ } <DATA>); |
28 | |
29 | while (<>) { |
30 | s/\b($censored)ed/CENSORED/ig; # don't say "CENSOREDed" |
31 | s/\b($censored)/CENSORED/ig; |
32 | print $_; |
33 | } |
34 | |
35 | __DATA__ |
5dda6db3 |
36 | ahqr enaql gjng pbpx t-fcbg |
37 | anxrq encr grng pbzrvat t\f+fcbg |
38 | avccyr erne guebng pbzvat tebva |
39 | bcravat fangpu gvg pebgpu ubbgre |
40 | beny fchax gvggl penc ubeal |
41 | betl fcrez gvggvr penpx ubyr |
42 | betnfz fcuvapgre hgrehf pernz uhzc |
43 | certanag fghq ihyin phag unaqwbo |
44 | cevpx fgnss intvan phz urnq |
45 | chff fhpx ivetva phzzvat wvfz |
46 | chffl fjnyybj ivoengbe pnzr xabo |
47 | chffvrf fperj jbzo preivk xvff |
48 | chovp frk jrg pureel ybir |
49 | chqraqhz frkhny juber pyvg ybire |
5e2a9814 |
50 | chzc frrq kkk pyvgbevf ybirq |
5dda6db3 |
51 | cnagvrf frzra nany pyvggl ybnq |
52 | crargengr funsg nerbyn pyvznk ynovn |
53 | crargengrq funt nff qevyyrq ynvq |
54 | cravf funttvat nffubyr qrsybjre yrfovna |
55 | crgre fuvg obbo qvpx yvcf |
56 | crpxre fvrt\furvy oernfg qvyqb znfgheong |
57 | cunyyhf fyhg ohgg rebgvp znfgheongr |
58 | cvff fyhggvfu ohggbpx rerpgvba znfgheongvat |
59 | ebfrohq fyvg onyy rkcbfrq znzznel |
60 | ebq gbathr ovgpu shpx znzznevrf |
61 | ehg gbby oybj snpvny |