I use Perl to generate the family Christmas gift exchange list. This was a dreaded yearly chore because the exchange list had the following "rules": 1. Men exchanged gifts with men. 2. Women exchanged gifts with women. 3. Children exchanged gifts with children. Our family is composed of 5 siblings and their spouses with a total of 18 children among them. In addition, the children's exchange had to be weighted to compensate for one family with lots of childen so they didn't wind up exchanging gifts mostly within their own family. The Fisher-Yates shuffle algorithm is used to randomize the results so different pairings are generated each time it is run. This program has transformed a yearly chore into a breeze, and my wife no longer has to ask multiple times to have the list created.
"Its not how hard you work, its how much you get done."