#!/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=; 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 ' ', $_ } ); close DATAOUT; exit; } } } $censored = join("|", reverse sort { $a cmp $b } grep { length $_ } map { chomp; y/a-z/n-za-m/; split ' ', $_ } ); while (<>) { s/\b($censored)ed/CENSORED/ig; # don't say "CENSOREDed" s/\b($censored)/CENSORED/ig; print $_; } __DATA__ ahqr enaql grng pbzrvat t\f+fcbg anxrq encr guebng pbzvat tebva avccyr erne gvg pebgpu ubbgre bcravat fangpu gvggl penc ubeal beny fchax gvggvr penpx ubyr betl fcrez hgrehf pernz uhzc betnfz fcuvapgre ihyin phag unaqwbo certanag fghq intvan phz urnq cevpx fgnss ivetva phzzvat wvfz chff fhpx ivoengbe pnzr xabo chffl fjnyybj jbzo preivk xvff chffvrf fperj jrg pureel ybir chovp frk juber pyvg ybire chqraqhz frkhny kkk pyvgbehf ybirq chzc frrq nany pyvggl ybnq cnagvrf frzra nerbyn pyvznk ynovn crargengr funsg nff qevyyrq ynvq crargengrq funt nffubyr qrsybjre yrfovna cravf funttvat obbo qvpx yvcf crgre fuvg oernfg qvyqb znfgheong crpxre fyhg ohgg rebgvp znfgheongr cunyyhf fyhggvfu ohggbpx rerpgvba znfgheongvat cvff fyvg onyy rkcbfrq znzznel ebfrohq gbathr ovgpu shpx znzznevrf ebq gbby oybj snpvny ehg gjng pbpx t-fcbg