File: censor

package info (click to toggle)
filters 2.55-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 292 kB
  • ctags: 50
  • sloc: lex: 1,820; perl: 1,019; ansic: 217; makefile: 50
file content (61 lines) | stat: -rwxr-xr-x 1,765 bytes parent folder | download | duplicates (8)
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
#!/usr/bin/perl
# Censor filter.
# Copyright 2002 by Joey Hess under the terms of the GNU GPL.

# Yes, this program is self-modifying code, if you want it to be.
if (exists $ENV{ADD_WORD}) {
	open(IN, $0) || die "cannot read myself";
	@lines=<IN>;
	close IN;
	open OUT, ">$0" || die "cannot write myself";
	for (@lines) {
		print OUT $_;
		if (/^__DATA__\n$/) {
			open(DATAOUT, "|sort|uniq|column >> $0");
			$ENV{ADD_WORD} =~ y/n-za-m/a-z/;
			print DATAOUT "$ENV{ADD_WORD}\n";
			print DATAOUT join("\n", 
					map { chomp; split ' ', $_ } <DATA>);
			close DATAOUT;
			exit;
		}
	}
}

$censored = join("|", reverse sort { $a cmp $b } 
		grep { length $_ }
		map { chomp; y/a-z/n-za-m/; split ' ', $_ } <DATA>);

while (<>) {
	s/\b($censored)ed/CENSORED/ig; # don't say "CENSOREDed"
	s/\b($censored)/CENSORED/ig;
	print $_;
}

__DATA__
ahqr		enaql		gjng		pbpx		t-fcbg
anxrq		encr		grng		pbzrvat		t\f+fcbg
avccyr		erne		guebng		pbzvat		tebva
bcravat		fangpu		gvg		pebgpu		ubbgre
beny		fchax		gvggl		penc		ubeal
betl		fcrez		gvggvr		penpx		ubyr
betnfz		fcuvapgre	hgrehf		pernz		uhzc
certanag	fghq		ihyin		phag		unaqwbo
cevpx		fgnss		intvan		phz		urnq
chff		fhpx		ivetva		phzzvat		wvfz
chffl		fjnyybj		ivoengbe	pnzr		xabo
chffvrf		fperj		jbzo		preivk		xvff
chovp		frk		jrg		pureel		ybir
chqraqhz	frkhny		juber		pyvg		ybire
chzc		frrq		kkk		pyvgbevf	ybirq
cnagvrf		frzra		nany		pyvggl		ybnq
crargengr	funsg		nerbyn		pyvznk		ynovn
crargengrq	funt		nff		qevyyrq		ynvq
cravf		funttvat	nffubyr		qrsybjre	yrfovna
crgre		fuvg		obbo		qvpx		yvcf
crpxre		fvrt\furvy	oernfg		qvyqb		znfgheong
cunyyhf		fyhg		ohgg		rebgvp		znfgheongr
cvff		fyhggvfu	ohggbpx		rerpgvba	znfgheongvat
ebfrohq		fyvg		onyy		rkcbfrq		znzznel
ebq		gbathr		ovgpu		shpx		znzznevrf
ehg		gbby		oybj		snpvny