I am working with form processing and text manipulation, and I found two useful functions; tr/// and s/// They do pretty much the same thing, but I was wondering if anyone could explain to me what the difference is and if one would ever be more useful than the other in a situation. Thanks!

- Dano

tr/// only replaces characters for characters (transliteration). It is very limited but faster than s/// for simple character replacing. s/// is a full blown regexp that can use all of perls various options for pattern matching and substitution.

For example if all you wanted to do was replace all A's with Z's tr is the better choice:

tr/A/Z/;

tr/// can't even use case insensitive matching so to replace all 'A' and 'a' with 'Z' you have to do this:

tr/aA/Z/;

the only useful option with tr/// is the range operator:

tr/a-z/A-Z/

besides that the three basic modifiers are:

c Complement the SEARCHLIST.
d Delete found but unreplaced characters.
s Squash duplicate replaced characters.

see:

http://perldoc.perl.org/perlop.html

for more information