From: Nick Brown Date: 2008-08-21T05:25:14+09:00 Subject: Re: unintuitive language feature (exclamation functions) F. Senault wrote: > Please provide some code to demonstrate this. #!/usr/bin/env ruby require 'sqlite3' db = SQLite3::Database.new('test.sqlite') db.execute ('drop table if exists example') # clean up incase of multiple runs db.execute('create table example (aval)') require 'cgi' cgi = CGI.new('html4') a = cgi['a'] a.sub!(/hi/, 'bye') # to see expected behavior, replace the above with: a = a.sub(/hi/, 'bye') puts "Inserting value a=#{a} into the database.\n" sql = "insert into example (aval) values (?)" db.execute(sql, a) sql = "select aval from example" val = db.get_first_value(sql) puts "What was actually inserted into the database: #{val}\n" ########---------- end of code To run this, type "a=hi"[enter][ctrl-d] to simulate the behavior of a cgi session. You will get the output: Inserting value a=bye into the database. What was actually inserted into the database: hi Since other responders seem to think I expect sub to behave the same as sub!, I don't. I expect str.sub! to modify str, and I expect str.sub to return a modified copy of the str. This is not the same behavior. -- Posted via http://www.ruby-forum.com/.