* Added a censor filter.
[filters.git] / censor
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__
36 ahqr enaql grng pbzrvat t\f+fcbg
37 anxrq encr guebng pbzvat tebva
38 avccyr erne gvg pebgpu ubbgre
39 bcravat fangpu gvggl penc ubeal
40 beny fchax gvggvr penpx ubyr
41 betl fcrez hgrehf pernz uhzc
42 betnfz fcuvapgre ihyin phag unaqwbo
43 certanag fghq intvan phz urnq
44 cevpx fgnss ivetva phzzvat wvfz
45 chff fhpx ivoengbe pnzr xabo
46 chffl fjnyybj jbzo preivk xvff
47 chffvrf fperj jrg pureel ybir
48 chovp frk juber pyvg ybire
49 chqraqhz frkhny kkk pyvgbehf ybirq
50 chzc frrq nany pyvggl ybnq
51 cnagvrf frzra nerbyn pyvznk ynovn
52 crargengr funsg nff qevyyrq ynvq
53 crargengrq funt nffubyr qrsybjre yrfovna
54 cravf funttvat obbo qvpx yvcf
55 crgre fuvg oernfg qvyqb znfgheong
56 crpxre fyhg ohgg rebgvp znfgheongr
57 cunyyhf fyhggvfu ohggbpx rerpgvba znfgheongvat
58 cvff fyvg onyy rkcbfrq znzznel
59 ebfrohq gbathr ovgpu shpx znzznevrf
60 ebq gbby oybj snpvny
61 ehg gjng pbpx t-fcbg
This page took 0.025667 seconds and 5 git commands to generate.