File Coverage

blib/lib/Bad/Words.pm
Criterion Covered Total %
statement 43 43 100.0
branch 14 20 70.0
condition 2 5 40.0
subroutine 9 9 100.0
pod 6 6 100.0
total 74 83 89.1


line stmt bran cond sub pod time code
1             package Bad::Words;
2              
3 5     5   3945 use strict;
  5         11  
  5         207  
4              
5 5     5   25 use vars qw($VERSION);
  5         9  
  5         8417  
6              
7             $VERSION = do { my @r = (q$Revision: 0.09 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
8              
9             =head1 NAME
10              
11             Bad::Words - a list of bad words
12              
13             =head1 KEYWORDS
14              
15             abuse bad dirty words vulgar swear slang drugs sex profane
16             abusive profanity vulgarity swearing sexual slurs
17              
18             =head1 SYNOPSIS
19              
20             require Bad::Words;
21              
22             my $wordref = once Bad::Words qw(add words);
23             my $wordref = new Bad::Words qw(add more words);
24             my $wordref = newthrd Bad::Words qw(add words);
25             my $updated = $wordref->remove(qw( words to remove ));
26             my $numberOfWords = $updated->count;
27              
28             =head1 DESCRIPTION
29              
30             This module returns an array REF to an alphabetically sorted list of LOWER CASE B.
31             You can add more words during initiliazation with B, B, and B.
32              
33             The list contains American dirty words, swear words, etc...
34              
35             =head1 WORD SOURCES
36              
37             The words are taken from the public domain, internet sites and the
38             imagination of contributors.
39            
40             =========================================
41              
42             http://fffff.at/googles-official-list-of-bad-words/
43              
44             The contents of the site are all in the public domain. You may enjoy, use,
45             modify, snipe about and republish all F.A.T. media and technologies as you
46             see fit.
47            
48             =========================================
49              
50             =cut
51              
52             #
53             #easterEgg.BadWorder.list={
54              
55             my @google = (qw(
56             4r5e
57             5h1t
58             5hit
59             a55
60             anal
61             anus
62             ar5e
63             arrse
64             arse
65             ass
66             ass-fucker
67             asses
68             assfucker
69             assfukka
70             asshole
71             assholes
72             asswhole
73             a_s_s
74             b!tch
75             b00bs
76             b17ch
77             b1tch
78             ballbag
79             balls
80             ballsack
81             bastard
82             beastial
83             beastiality
84             bellend
85             bestial
86             bestiality
87             bi+ch
88             biatch
89             bitch
90             bitcher
91             bitchers
92             bitches
93             bitchin
94             bitching
95             bloody),
96             'blow job', qw(
97             blowjob
98             blowjobs
99             boiolas
100             bollock
101             bollok
102             boner
103             boob
104             boobs
105             booobs
106             boooobs
107             booooobs
108             booooooobs
109             breasts
110             buceta
111             bugger
112             bum),
113             'bunny fucker', qw(
114             butt
115             butthole
116             buttmuch
117             buttplug
118             c0ck
119             c0cksucker),
120             'carpet muncher', qw(
121             cawk
122             chink
123             cipa
124             cl1t
125             clit
126             clitoris
127             clits
128             cnut
129             cock
130             cock-sucker
131             cockface
132             cockhead
133             cockmunch
134             cockmuncher
135             cocks
136             cocksuck
137             cocksucked
138             cocksucker
139             cocksucking
140             cocksucks
141             cocksuka
142             cocksukka
143             cok
144             cokmuncher
145             coksucka
146             coon
147             cox
148             crap
149             cum
150             cummer
151             cumming
152             cums
153             cumshot
154             cunilingus
155             cunillingus
156             cunnilingus
157             cunt
158             cuntlick
159             cuntlicker
160             cuntlicking
161             cunts
162             cyalis
163             cyberfuc
164             cyberfuck
165             cyberfucked
166             cyberfucker
167             cyberfuckers
168             cyberfucking
169             d1ck
170             damn
171             dick
172             dickhead
173             dildo
174             dildos
175             dink
176             dinks
177             dirsa
178             dlck
179             dog-fucker
180             doggin
181             dogging
182             donkeyribber
183             doosh
184             duche
185             dyke
186             ejaculate
187             ejaculated
188             ejaculates
189             ejaculating
190             ejaculatings
191             ejaculation
192             ejakulate),
193             'f u c k',
194             'f u c k e r', qw(
195             f4nny
196             fag
197             fagging
198             faggitt
199             faggot
200             faggs
201             fagot
202             fagots
203             fags
204             fanny
205             fannyflaps
206             fannyfucker
207             fanyy
208             fatass
209             fcuk
210             fcuker
211             fcuking
212             feck
213             fecker
214             felching
215             fellate
216             fellatio
217             fingerfuck
218             fingerfucked
219             fingerfucker
220             fingerfuckers
221             fingerfucking
222             fingerfucks
223             fistfuck
224             fistfucked
225             fistfucker
226             fistfuckers
227             fistfucking
228             fistfuckings
229             fistfucks
230             flange
231             fook
232             fooker
233             fuck
234             fucka
235             fucked
236             fucker
237             fuckers
238             fuckhead
239             fuckheads
240             fuckin
241             fucking
242             fuckings
243             fuckingshitmotherfucker
244             fuckme
245             fucks
246             fuckwhit
247             fuckwit
248             fudge packer
249             fudgepacker
250             fuk
251             fuker
252             fukker
253             fukkin
254             fuks
255             fukwhit
256             fukwit
257             fux
258             fux0r
259             f_u_c_k
260             gangbang
261             gangbanged
262             gangbangs
263             gaylord
264             gaysex
265             goatse
266             God
267             god-dam
268             god-damned
269             goddamn
270             goddamned
271             hardcoresex
272             hell
273             heshe
274             hoar
275             hoare
276             hoer
277             homo
278             hore
279             horniest
280             horny
281             hotsex
282             jack-off
283             jackoff
284             jap
285             jerk-off
286             jism
287             jiz
288             jizm
289             jizz
290             kawk
291             knob
292             knobead
293             knobed
294             knobend
295             knobhead
296             knobjocky
297             knobjokey
298             kock
299             kondum
300             kondums
301             kum
302             kummer
303             kumming
304             kums
305             kunilingus
306             l3i+ch
307             l3itch
308             labia
309             lmfao
310             lust
311             lusting
312             m0f0
313             m0fo
314             m45terbate
315             ma5terb8
316             ma5terbate
317             masochist
318             master-bate
319             masterb8
320             masterbat
321             masterbat3
322             masterbate
323             masterbation
324             masterbations
325             masturbate
326             mo-fo
327             mof0
328             mofo
329             mothafuck
330             mothafucka
331             mothafuckas
332             mothafuckaz
333             mothafucked
334             mothafucker
335             mothafuckers
336             mothafuckin
337             mothafucking
338             mothafuckings
339             mothafucks),
340             'mother fucker', qw(
341             motherfuck
342             motherfucked
343             motherfucker
344             motherfuckers
345             motherfuckin
346             motherfucking
347             motherfuckings
348             motherfuckka
349             motherfucks
350             muff
351             mutha
352             muthafecker
353             muthafuckker
354             muther
355             mutherfucker
356             n1gga
357             n1gger
358             nazi
359             nigg3r
360             nigg4h
361             nigga
362             niggah
363             niggas
364             niggaz
365             nigger
366             niggers
367             nob),
368             'nob jokey', qw(
369             nobhead
370             nobjocky
371             nobjokey
372             numbnuts
373             nutsack
374             orgasim
375             orgasims
376             orgasm
377             orgasms
378             p0rn
379             pawn
380             pecker
381             penis
382             penisfucker
383             phonesex
384             phuck
385             phuk
386             phuked
387             phuking
388             phukked
389             phukking
390             phuks
391             phuq
392             pigfucker
393             pimpis
394             piss
395             pissed
396             pisser
397             pissers
398             pisses
399             pissflaps
400             pissin
401             pissing
402             pissoff
403             poop
404             porn
405             porno
406             pornography
407             pornos
408             prick
409             pricks
410             pron
411             pube
412             pusse
413             pussi
414             pussies
415             pussy
416             pussys
417             rectum
418             retard
419             rimjaw
420             rimming),
421             's hit', qw(
422             s.o.b.
423             sadist
424             schlong
425             screwing
426             scroat
427             scrote
428             scrotum
429             semen
430             sex
431             sh!+
432             sh!t
433             sh1t
434             shag
435             shagger
436             shaggin
437             shagging
438             shemale
439             shi+
440             shit
441             shitdick
442             shite
443             shited
444             shitey
445             shitfuck
446             shitfull
447             shithead
448             shiting
449             shitings
450             shits
451             shitted
452             shitter
453             shitters
454             shitting
455             shittings
456             shitty
457             skank
458             slut
459             sluts
460             smegma
461             smut
462             snatch
463             son-of-a-bitch
464             spac
465             spunk
466             s_h_i_t
467             t1tt1e5
468             t1tties
469             teets
470             teez
471             testical
472             testicle
473             tit
474             titfuck
475             tits
476             titt
477             tittie5
478             tittiefucker
479             titties
480             tittyfuck
481             tittywank
482             titwank
483             tosser
484             turd
485             tw4t
486             twat
487             twathead
488             twatty
489             twunt
490             twunter
491             v14gra
492             v1gra
493             vagina
494             viagra
495             vulva
496             w00se
497             wang
498             wank
499             wanker
500             wanky
501             whoar
502             whore
503             willies
504             willy
505             xrated
506             xxx
507             ));
508              
509             =pod
510              
511             http://urbanoalvarez.es/blog/2008/04/04/bad-words-list/
512              
513             A public forum
514              
515             =========================================
516              
517             =cut
518              
519             my @urbanos = (qw(
520             ahole
521             anus
522             ash0le
523             ash0les
524             asholes
525             ass),
526             'Ass Monkey', qw(
527             Assface
528             assh0le
529             assh0lez
530             asshole
531             assholes
532             assholz
533             asswipe
534             azzhole
535             bassterds
536             bastard
537             bastards
538             bastardz
539             basterds
540             basterdz
541             Biatch
542             bitch
543             bitches
544             Blow Job
545             boffing
546             butthole
547             buttwipe
548             c0ck
549             c0cks
550             c0k),
551             'Carpet Muncher', qw(
552             cawk
553             cawks
554             Clit
555             cnts
556             cntz
557             cock
558             cockhead
559             cock-head
560             cocks
561             CockSucker
562             cock-sucker
563             crap
564             cum
565             cunt
566             cunts
567             cuntz
568             dick
569             dild0
570             dild0s
571             dildo
572             dildos
573             dilld0
574             dilld0s
575             dominatricks
576             dominatrics
577             dominatrix
578             dyke
579             enema),
580             'f u c k',
581             'f u c k e r', qw(
582             fag
583             fag1t
584             faget
585             fagg1t
586             faggit
587             faggot
588             fagit
589             fags
590             fagz
591             faig
592             faigs
593             fart),
594             'flipping the bird', qw(
595             fuck
596             fucker
597             fuckin
598             fucking
599             fucks),
600             'Fudge Packer', qw(
601             fuk
602             Fukah
603             Fuken
604             fuker
605             Fukin
606             Fukk
607             Fukkah
608             Fukken
609             Fukker
610             Fukkin
611             g00k
612             gay
613             gayboy
614             gaygirl
615             gays
616             gayz
617             God-damned
618             h00r
619             h0ar
620             h0re
621             hells
622             hoar
623             hoor
624             hoore
625             jackoff
626             jap
627             japs
628             jerk-off
629             jisim
630             jiss
631             jizm
632             jizz
633             knob
634             knobs
635             knobz
636             kunt
637             kunts
638             kuntz
639             Lesbian
640             Lezzian
641             Lipshits
642             Lipshitz
643             masochist
644             masokist
645             massterbait
646             masstrbait
647             masstrbate
648             masterbaiter
649             masterbate
650             masterbates),
651             'Motha Fucker',
652             'Motha Fuker',
653             'Motha Fukkah',
654             'Motha Fukker',
655             'Mother Fucker',
656             'Mother Fukah',
657             'Mother Fuker',
658             'Mother Fukkah',
659             'Mother Fukker',
660             'mother-fucker',
661             'Mutha Fucker',
662             'Mutha Fukah',
663             'Mutha Fuker',
664             'Mutha Fukkah',
665             'Mutha Fukker', qw(
666             n1gr
667             nastt
668             nigger
669             nigur
670             niiger
671             niigr;
672             orafis
673             orgasim;
674             orgasm
675             orgasum
676             oriface
677             orifice
678             orifiss
679             packi
680             packie
681             packy
682             paki
683             pakie
684             paky
685             pecker
686             peeenus
687             peeenusss
688             peenus
689             peinus
690             pen1s
691             penas
692             penis
693             penis-breath
694             penus
695             penuus
696             Phuc
697             Phuck
698             Phuk
699             Phuker
700             Phukker
701             polac
702             polack
703             polak
704             Poonani
705             pr1c
706             pr1ck
707             pr1k
708             pusse
709             pussee
710             pussy
711             puuke
712             puuker
713             queer
714             queers
715             queerz
716             qweers
717             qweerz
718             qweir
719             recktum
720             rectum
721             retard
722             sadist
723             scank
724             schlong
725             screwing
726             semen
727             sex
728             sexy
729             Sh!t
730             sh1t
731             sh1ter
732             sh1ts
733             sh1tter
734             sh1tz
735             shit
736             shits
737             shitter
738             Shitty
739             Shity
740             shitz
741             Shyt
742             Shyte
743             Shytty
744             Shyty
745             skanck
746             skank
747             skankee
748             skankey
749             skanks
750             Skanky
751             slut
752             sluts
753             Slutty
754             slutz
755             son-of-a-bitch
756             tit
757             turd
758             va1jina
759             vag1na
760             vagiina
761             vagina
762             vaj1na
763             vajina
764             vullva
765             vulva
766             w0p
767             wh00r
768             wh0re
769             whore
770             xrated
771             xxx
772             b!+ch
773             bitch
774             blowjob
775             clit
776             arschloch
777             fuck
778             shit
779             ass
780             asshole
781             b!tch
782             b17ch
783             b1tch
784             bastard
785             bi+ch
786             boiolas
787             buceta
788             c0ck
789             cawk
790             chink
791             cipa
792             clits
793             cock
794             cum
795             cunt
796             dildo
797             dirsa
798             ejakulate
799             fatass
800             fcuk
801             fuk
802             fux0r
803             hoer
804             hore
805             jism
806             kawk
807             l3itch
808             l3i+ch
809             lesbian
810             masturbate
811             masterbat
812             masterbat3
813             motherfucker
814             s.o.b.
815             mofo
816             nazi
817             nigga
818             nigger
819             nutsack
820             phuck
821             pimpis
822             pusse
823             pussy
824             scrotum
825             sh!t
826             shemale
827             shi+
828             sh!+
829             slut
830             smut
831             teets
832             tits
833             boobs
834             b00bs
835             teez
836             testical
837             testicle
838             titt
839             w00se
840             jackoff
841             wank
842             whoar
843             whore
844             damn
845             dyke
846             fuck
847             shit
848             amcik
849             andskota
850             arse
851             assrammer
852             ayir
853             bi7ch
854             bitch
855             bollock
856             breasts
857             butt-pirate
858             cabron
859             cazzo
860             chraa
861             chuj
862             Cock
863             cunt
864             d4mn
865             daygo
866             dego
867             dick
868             dike
869             dupa
870             dziwka
871             ejackulate
872             Ekrem
873             Ekto
874             enculer
875             faen
876             fag
877             fanculo
878             fanny
879             feces
880             feg
881             Felcher
882             ficken
883             fitt
884             Flikker
885             foreskin
886             Fotze),
887             'Fu\(', # HERE mark
888             '@$$', qw(
889             fuk
890             futkretzn
891             gay
892             gook
893             guiena
894             h0r
895             h4x0r
896             hell
897             helvete
898             hoer
899             honkey
900             Huevon
901             hui
902             injun
903             jizz
904             kanker
905             kike
906             klootzak
907             kraut
908             knulle
909             kuk
910             kuksuger
911             Kurac
912             kurwa
913             kusi
914             kyrpa
915             lesbo
916             mamhoon
917             masturbat
918             merd
919             mibun
920             monkleigh
921             mouliewop
922             muie
923             mulkku
924             muschi
925             nazis
926             nepesaurio
927             nigger
928             orospu
929             paska
930             perse
931             picka
932             pierdol
933             pillu
934             pimmel
935             piss
936             pizda
937             poontsee
938             poop
939             porn
940             p0rn
941             pr0n
942             preteen
943             pula
944             pule
945             puta
946             puto
947             qahbeh
948             queef
949             rautenberg
950             schaffer
951             scheiss
952             schlampe
953             schmuck
954             screw
955             sh!t
956             sharmuta
957             sharmute
958             shipal
959             shiz
960             skribz
961             skurwysyn
962             sphencter
963             spic
964             spierdalaj
965             splooge
966             suka
967             b00b
968             testicle
969             titt
970             twat
971             vittu
972             wank
973             wetback
974             wichser
975             wop
976             yed
977             zabourah
978             ));
979              
980             =pod
981              
982             http://wordpress.org/support/topic/plugin-wp-content-filter-list-of-swear-words
983             posted to http://www.ourchangingglobe.com/misc/badwords-comma.txt
984              
985             GPL2V2
986              
987             =========================================
988              
989             =cut
990              
991             my @changing = ('ahole','anus','ash0le','ash0les','asholes','ass','Ass Monkey','Assface',
992             'assh0le','assh0lez','asshole','assholes','assholz','asswipe','azzhole','bassterds','bastard',
993             'bastards','bastardz','basterds','basterdz','Biatch','bitch','bitches','Blow Job','boffing',
994             'butthole','buttwipe','c0ck','c0cks','c0k','Carpet Muncher','cawk','cawks','Clit','cnts','cntz',
995             'cock','cockhead','cock-head','cocks','CockSucker','cock-sucker','crap','cum','cunt','cunts',
996             'cuntz','dick','dild0','dild0s','dildo','dildos','dilld0','dilld0s','dominatricks','dominatrics',
997             'dominatrix','dyke','enema','f u c k','f u c k e r','fag','fag1t','faget','fagg1t','faggit',
998             'faggot','fagit','fags','fagz','faig','faigs','fart','flipping the bird','fuck','fucker',
999             'fuckin','fucking','fucks','Fudge Packer','fuk','Fukah','Fuken','fuker','Fukin','Fukk','Fukkah',
1000             'Fukken','Fukker','Fukkin','g00k','gay','gayboy','gaygirl','gays','gayz','God-damned','h00r',
1001             'h0ar','h0re','hells','hoar','hoor','hoore','jackoff','jap','japs','jerk-off','jisim','jiss','jizm',
1002             'jizz','knob','knobs','knobz','kunt','kunts','kuntz','Lesbian','Lezzian','Lipshits','Lipshitz',
1003             'masochist','masokist','massterbait','masstrbait','masstrbate','masterbaiter','masterbate',
1004             'masterbates','Motha Fucker','Motha Fuker','Motha Fukkah','Motha Fukker','Mother Fucker',
1005             'Mother Fukah','Mother Fuker','Mother Fukkah','Mother Fukker','mother-fucker','Mutha Fucker',
1006             'Mutha Fukah','Mutha Fuker','Mutha Fukkah','Mutha Fukker','n1gr','nastt','nigger','nigur','niiger',
1007             'niigr','orafis','orgasim','orgasm','orgasum','oriface','orifice','orifiss','packi','packie',
1008             'packy','paki','pakie','paky','pecker','peeenus','peeenusss','peenus','peinus','pen1s','penas',
1009             'penis','penis-breath','penus','penuus','Phuc','Phuck','Phuk','Phuker','Phukker','polac','polack',
1010             'polak','Poonani','pr1c','pr1ck','pr1k','pusse','pussee','pussy','puuke','puuker','queer','queers',
1011             'queerz','qweers','qweerz','qweir','recktum','rectum','retard','sadist','scank','schlong','screwing',
1012             'semen','sex','sexy','Sh!t','sh1t','sh1ter','sh1ts','sh1tter','sh1tz','shit','shits','shitter',
1013             'Shitty','Shity','shitz','Shyt','Shyte','Shytty','Shyty','skanck','skank','skankee','skankey',
1014             'skanks','Skanky','slut','sluts','Slutty','slutz','son-of-a-bitch','tit','turd','va1jina','vag1na',
1015             'vagiina','vagina','vaj1na','vajina','vullva','vulva','w0p','wh00r','wh0re','whore','xrated','xxx');
1016              
1017             #################
1018             #
1019             # assorted additional words
1020              
1021             my @assorted = (
1022             'batty man', qw(
1023             bender
1024             bollocks
1025             bumboy
1026             cracker
1027             cumsucker
1028             douchebag
1029             fucktwat
1030             ho
1031             honky
1032             jackass),
1033             'joey semen',
1034             'joey deacon', qw(
1035             knobcheese
1036             minge
1037             minger
1038             mong
1039             munter
1040             pickle
1041             rimmer
1042             spakka
1043             spaz
1044             taint
1045             tool
1046             ));
1047              
1048             my $ref; # not thread safe
1049              
1050             sub once {
1051 5 50   5 1 2272 return $ref if $ref;
1052 5         30 &new;
1053             }
1054              
1055             sub new {
1056 7     7 1 354 $ref = &newthrd;
1057             }
1058              
1059             sub newthrd {
1060 7     7 1 16 my $proto = shift;
1061 7   50     66 my $class = ref $proto || $proto || __PACKAGE__;
1062 7 100       32 my $wr = ref($_[0]) ? $_[0] : [@_];
1063 7 50       23 my @add = grep { defined $_ && $_ ne '' } @$wr; # strip empty and undefined entries
  18         70  
1064 7         71 my %uniq = map { lc($_) => 1 } (@google,@urbanos,@changing,@assorted,@add);
  8327         17862  
1065 7         4268 my @list = sort keys %uniq;
1066 7         566 bless \@list, $class;
1067             }
1068              
1069             my $passes;
1070             sub remove {
1071 2     2 1 12 my $wr = shift;
1072 2 100       8 my $x = ref($_[0]) ? $_[0] : [@_];
1073 2 50       6 return $wr unless @$x; # empty or missing list
1074 2 50 33     4 my @list = sort grep { defined $_ && $_ ne '' && ($_ = lc $_) }@$x;
  14         96  
1075             # attempt to remove words in a single pass
1076             # this will fail if the 'remove' word in not
1077             # in the bad list. Hence the while loop
1078 2         4 $passes = 0; # for debug
1079             LIST:
1080 2         6 while (defined (my $s = shift @list)) {
1081 8         10 $passes++;
1082 8         19 for (my $i=0;$i< @$wr;) {
1083 6034 100       7783 if ($s eq $wr->[$i]) {
1084 6         17 splice @$wr,$i,1;
1085 6 50       29 last LIST unless defined ($s = shift @list); # end of list?
1086             } else {
1087 6028         9200 $i++;
1088             }
1089             }
1090             }
1091 2         16 $wr;
1092             }
1093              
1094 2     2   116 sub _passes { return $passes };
1095              
1096             sub noregex {
1097 2     2 1 56 my($wr,$regex) = @_;
1098 2 50       7 return $wr unless defined $regex;
1099 2         7 for (my $i=0;$i< @$wr;) {
1100 1500 100       3092 if ($wr->[$i] =~ /$regex/) {
1101 37         55 splice @$wr,$i,1;
1102 37         76 next;
1103             }
1104 1463         2403 $i++;
1105             }
1106 2         6 $wr;
1107             }
1108              
1109             sub count {
1110 11     11 1 118 return scalar @{$_[0]};
  11         67  
1111             }
1112              
1113             1;
1114             __END__