Ruby Programming/Reference/Predefined Variables
Ruby's predefined (built-in) variables affect the behavior of the entire program, so their use in libraries isn't recommended.
The values in most predefined variables can be accessed by alternative means.
$!
- The last exception object raised. The exception object can also be accessed using => in rescue clause.
$@
- The stack backtrace for the last exception raised. The stack backtrace information can retrieved by Exception#backtrace method of the last exception.
$/
- The input record separator (newline by default). gets, readline, etc., take their input record separator as optional argument.
$\
- The output record separator (nil by default).
$,
- The output separator between the arguments to print and Array#join (nil by default). You can specify separator explicitly to Array#join.
$;
- The default separator for split (nil by default). You can specify separator explicitly for String#split.
$.
- The number of the last line read from the current input file. Equivalent to ARGF.lineno.
$<
- Synonym for ARGF.
$>
- Synonym for $defout.
$0
- The name of the current Ruby program being executed.
$$
- The process.pid of the current Ruby program being executed.
$?
- The exit status of the last process terminated.
$:
- Synonym for $LOAD_PATH.
$DEBUG
- True if the -d or --debug command-line option is specified.
$defout
- The destination output for print and printf ($stdout by default).
$F
- The variable that receives the output from split when -a is specified. This variable is set if the -a command-line option is specified along with the -p or -n option.
$FILENAME
- The name of the file currently being read from ARGF. Equivalent to ARGF.filename.
$LOAD_PATH
- An array holding the directories to be searched when loading files with the load and require methods.
$SAFE
- The security level.
0 No checks are performed on externally supplied (tainted) data. (default) 1 Potentially dangerous operations using tainted data are forbidden. 2 Potentially dangerous operations on processes and files are forbidden. 3 All newly created objects are considered tainted. 4 Modification of global data is forbidden.
$stdin
- Standard input (STDIN by default).
$stdout
- Standard output (STDOUT by default).
$stderr
- Standard error (STDERR by default).
$VERBOSE
- True if the -v, -w, or --verbose command-line option is specified.
$- x
- The value of interpreter option -x (x=0, a, d, F, i, K, l, p, v).
The following are local variables:
$_
- The last string read by gets or readline in the current scope.
$~
- MatchData relating to the last match. Regex#match method returns the last match information.
The following variables hold values that change in accordance with the current value of $~ and can't receive assignment:
$ n ($1, $2, $3...)
- The string matched in the nth group of the last pattern match. Equivalent to m[n], where m is a MatchData object.
$&
- The string matched in the last pattern match. Equivalent to m[0], where m is a MatchData object.
$`
- The string preceding the match in the last pattern match. Equivalent to m.pre_match, where m is a MatchData object.
$'
- The string following the match in the last pattern match. Equivalent to m.post_match, where m is a MatchData object.
$+
- The string corresponding to the last successfully matched group in the last pattern match.