$_ = '/////usr///bin///perl////'; s!^/+|/+$!/!g; print $_, $/; # but as you can see this is still broken so # assuming it is dealing with *nix paths # you probably want just $_ = '/////usr///bin///perl////'; s!/+!/!g; print $_, $/; # but as tr/// is faster than s/// this will probably be the winner $_ = '/////usr///bin///perl////'; tr!/!/!s; print $_, $/; __DATA__ /usr///bin///perl/ /usr/bin/perl/ /usr/bin/perl/