0

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

2
Contributors
1
Reply
2
Views
10 Years
Discussion Span
Last Post by KevinADC
0

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

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.