# *** before: ***
s_old = "hello".freeze # freezing needed an explicit call on every literal
begin
s_old << " world"
rescue => e
puts "cannot modify frozen String: #{e.class}"
end
# *** in version 2.3: ***
# frozen_string_literal: true <- as the very first comment of a real file,
# every string literal below becomes frozen
s = "hello"
puts s.frozen?
mutable = (-s).dup # unary -@ returns a frozen copy, +@ an unfrozen one
mutable << " world"
puts mutable