一、异常
| 名称 | 描述 | 相当于 |
|---|
| $! | 捕获的异常 | Exception |
| $@ | 异常的backtrace | Exception#backtrace |
例:
begin
raise "err msg"
rescue
p $! # #<RuntimeError: err msg>
p $@ #["(irb):2:in `irb_binding'", "/usr/local/lib/ruby/1.8/irb/workspace.rb:52:in `irb_binding'", ":0"]
end
二、正则
对于 m=str.match(pattern)
| 变量 | 性质 | 描述 | 相当于 |
|---|
| $& | 只读,本地 | 匹配的项 | m[0] |
| $` | 只读,本地 | 匹配的字符串之前未匹配的部分 | m.pre_match |
| $' | 只读,本地 | 匹配的字符串之后未匹配的部分 | m.post_match |
| $+ | 只读,本地 | 最后一个匹配的项 | m[m.size-1] |
| $1,$2 | 只读,本地 | 所指定的匹配的项 | m[n] |
| $~ | 本地 | 匹配的结果 | m |
例:
"start-111-222-333-444-end" =~ /(\d+)-(\d+)-(\d+)-(\d+)/
p $& #"111-222-333-444"
p $` # "start-"
p $' # "-end"
p $+ # "444"
p $1 # "111"
p $2 # "222"
p $~[3] # "333"
三、IO/String
| 名称 | 描述 | 默认 |
|---|
| $_ | gets,readline最后读入的行 | |
| $F | $_.split 仅当选项-a为真时 | |
| $/ | 用于gets,readline等分割符 | "\n" |
| $\ | print与IO.write的分割符 | nil |
| $, | Array#join的分割符 | nil |
| $; | String#split的分割符 | nil |
| $. | ARGF.lineno | |
| $< | ARGF | |
| $* | ARGV | |
| $> | $defout | |
| $defout | print与printf的输出变量,缺省为$stdio | |
| $stdin | 当前标准输入 缺省 STDIN | |
| $stdout | 当前标准输出 缺省 STDOUT | |
| $stderr | 当前标准错误输出 缺省 STDERR | |
四、进程
| 名称 | 描述 |
|---|
| $0 | 当前ruby程序名 |
| $$ | Process.pid |
| $? | 最后执行的外部程序的返回状态 |
五、其它
| 名称 | 描述 |
|---|
| $: | $LOAD_PATH |
| $" | 已require的module,用于避免二次载入 |
| $DEBUG | 是否为DEBUG状态, -d --debug开启则为真 |
| $FILENAME | $<.filename |
| $SAFE | 安全等级 |
| $VERBOSE | verbose选项是开启则为真 |
| $-O | $/ |
| $-a | -a选项开启则为真 |
| $-d | $DEBUG |
| $-F | $; |
| $-I | $: |
| $-l | -lis选项开启则为真 |
| $-p | -pis选项开启则为真 |