1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
=begin
The following gobals have local scope:
$1 .. $9 NTH_REF not-aliasable
$& BACK_REF
$+ BACK_REF
$` BACK_REF
$' BACK_REF
$~ GVAR
$_ GVAR
True globals:
$*
$?
$<
$>
$!
$@
$;
$=
$.
$/
$~
$+
$_
$"
$&
$.
$,
$\
$$
$'
$`
$$
$0
$/
=end
require 'English'
puts "CHILD_STATUS = '#{$CHILD_STATUS}'"
puts "DEFAULT_INPUT = '#{$DEFAULT_INPUT}'"
puts "-------------------------------"
def foo
"cat" =~ /(c)(a)(t)/
puts "foo:1"
puts global_variables.join(' ')
puts "$1 = #{$1}"
puts
bar()
puts "foo:2"
puts global_variables.join(' ')
puts "$1 = #{$1}"
puts
baz()
puts "foo:3"
puts global_variables.join(' ')
puts "$1 = #{$1}"
puts
end
def bar
"bo" =~ /(b)(o)/
puts "bar:1"
puts global_variables.join(' ')
puts "$1 = #{$1}"
puts
end
def baz
puts "baz:1"
puts global_variables.join(' ')
puts "$1 = #{$1}"
puts
end
foo
# $! variable is real global
def exc
$! = NameError.new "bogus"
begin
begin
$" = 'foo'
rescue NameError
puts "Message 1: #{$!}"
display_message
$! = 'bar'
end
rescue TypeError
puts "Message 3: #{$!}"
end
puts "Message 4: #{$!}"
end
def display_message
puts "Message 2: #{$!}"
end
exc
puts "Message 5: #{$!}"
# testing $_ - it's local scoped global yet can be aliased
# => RubyOps.GetGlobal needs to get the current environment
def test_gets
gets
puts "Gets returned 1: '#{$_}'"
puts "Gets returned 1: '#{$FOO}'"
dump_gets
end
def dump_gets
puts "Gets returned 2: '#{$_}'"
end
$X = 'X'
alias $_ $X # alias hides the real global
alias $FOO $_
alias $BAR $`
test_gets
|