Here is my solution.  I didn't focus on trying to make a one-liner,  
as others have, but made a couple of methods (shuffle and swap) for  
Array which I might find useful in another context.

-albert


'scramble.rb':
==

class Array
   def shuffle
     # Fisher Yates shuffling of an array
     self.length.step(1,-1) do |i|
       j = rand(i)
       next if j == i - 1
       self.swap!(j,i-1)
     end
     self
   end

   def swap!(a,b)
       # Swap array elements in place.
       self[a], self[b] = self[b], self[a]
       self
   end
end

if ARGV[0] == nil
    abort("Usage: scramble.rb file")
else
    file = ARGV[0]
end

f = File.open(file)
while line = f.gets
   # Using a regex, shuffle all alphabetic characters which are  
'internal' within a word.
   line.gsub!(/([A-z])([A-z]{2,})(?=[A-z])/) {$1 + $2.split 
(//).shuffle.join}
   puts(line)
end