in reply to A Quick Regex Question

Here's a way to do it in a regular expression. Note that there's no particular reason to use this instead of tr, except that it's kind of fun, and it will work as part of a larger pattern (for example to find any matching words within a paragraph). :-)
/([perl]).*(?!\1)([perl]).*(?!\1)(?!\2)([perl]).*(?!\1)(?!\2)(?!\3)([p +erl])/

This makes use of zero-width negative look-ahead assertions (see perlre(1)) to say essentially "any letters from this group, except for the ones you've already seen". So the first [perl] will match any of those four letters; the second time, it's preceded by an assertion that the character cannot be the character that matched the first time; and so forth.

Here's a variation that will pull out any words containing those four letters from a line of text:

while (<>) { my $i=0; print join(" ", grep { (($i++) % 5) == 0 } /\b(([perl])\w*(?!\2)([perl])\w*(?!\2)(?!\3)([perl])\w*(?!\2)(?!\3 +)(?!\4)([perl]))\b/g),"\n"; }