# While gsub!

**URL:** <https://www.ruby-forum.com/t/while-gsub/109786>\
**Category:** Ruby\
**Created:** [July 19, 2007, 2:15am UTC](https://www.ruby-forum.com/t/while-gsub/109786 "2007-07-19T02:15:59Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rmac217](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/bc8723/32.png) [@rmac217](https://www.ruby-forum.com/u/rmac217)\
**Post date:** [July 19, 2007, 2:15am UTC](https://www.ruby-forum.com/t/while-gsub/109786/1 "2007-07-19T02:15:59Z")

</div>

Is there a _better_ way to perform multiple substitutions to a string  
than this?

string = ‘/…/…/…//…////…/…/etc/passwd’

while string.gsub!(/..//,’’)  
end

it’s working as is, but seems odd to me to have an empty loop… I’m  
just playing with the TCPServer class…

#!/usr/bin/ruby  
require ‘socket’

port = 80  
listen = ‘0.0.0.0’  
header = “HTTP/1.1 200/OK\r\nContent-type: text/html\r\n\r\n”

httpd = TCPServer.new(listen, port)  
while session = httpd.accept  
request = session.gets  
address = session.addr[3]  
puts “#{address} #{request}”  
askfile = request.scan(/GET (.\*) HTTP/).to\_s  
while askfile.gsub!(/…//,’’)  
end  
reqfile = ‘/var/www’ + askfile  
reqfile += ‘index.html’ if reqfile == ‘/var/www/’  
if File.exists?(reqfile)  
file = File.new(reqfile, ‘r’)  
output = file.readlines  
file.close  
else  
output = ‘Not Found’  
output += “

## Unfortunately, “#{askfile}” does not exist on this server…
”  
output += ‘

perhaps you need more fortune:

’  
output += “
* * *

#{`/usr/games/fortune`}

* * *
”  
output += ‘’  
end  
session.print header  
session.print output  
session.close  
end

---

<div class="post-metadata">

**Author:** ![rmac217](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/bc8723/32.png) [@rmac217](https://www.ruby-forum.com/u/rmac217)\
**Post date:** [July 19, 2007, 2:18am UTC](https://www.ruby-forum.com/t/while-gsub/109786/2 "2007-07-19T02:18:59Z")

</div>

On Thu, Jul 19, 2007 at 09:14:59AM +0900, removed\_email\_address@domain.invalid wrote:

> Is there a _better_ way to perform multiple substitutions to a string  
> than this?
> 
> string = ‘/…/…/…//…////…/…/etc/passwd’
> 
> while string.gsub!(/..//,’’)  
> end

irb(main):001:\>\> string = ‘/…/…/…//…////…/…/etc/passwd’  
=\> “/…/…/…//…////…/…/etc/passwd”  
irb(main):002:0\> File.expand\_path(string)  
=\> “/etc/passwd”

marcel

---

<div class="post-metadata">

**Author:** ![rmac217](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/bc8723/32.png) [@rmac217](https://www.ruby-forum.com/u/rmac217)\
**Post date:** [July 19, 2007, 6:42pm UTC](https://www.ruby-forum.com/t/while-gsub/109786/3 "2007-07-19T18:42:20Z")

</div>

On Jul 18, 5:18 pm, “Marcel Molina Jr.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> =\> “/…/…/…//…////…/…/etc/passwd”  
> irb(main):002:0\> File.expand\_path(string)  
> =\> “/etc/passwd”
> 
> ## marcel
> 
> Marcel Molina Jr. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

that’s great! thank you
