Pre-defined global variables

  • $!: The Exception object set by Kernel#raise.
  • $@: The same as $!.backtrace.
  • $~: The information about the last match in the current scope (thread-local and frame-local).

  • $&: The string matched by the last successful match.
  • $`: The string to the left of the last successful match.
  • $': The string to the right of the last successful match.
  • $+: The highest group matched by the last successful match.
  • $1: The Nth group of the last successful match. May be > 1.
  • $=: This variable is no longer effective. Deprecated.
  • $/: The input record separator, newline by default. Aliased to $-0.
  • $\: The output record separator for Kernel#print and IO#write. Default is nil.

  • $,: The output field separator for Kernel#print and Array#join. Non-nil $, will be deprecated.

  • $;: The default separator for String#split. Non-nil $; will be deprecated. Aliased to $-F.

  • $.: The current input line number of the last file that was read.
  • $<: The same as ARGF.
  • $>: The default output stream for Kernel#print and Kernel#printf. $stdout by default.

  • $_: The last input line of string by gets or readline.
  • $0: Contains the name of the script being executed. May be assignable.
  • $*: The same as ARGV.
  • $$: The process number of the Ruby running this script. Same as Process.pid.
  • $?: The status of the last executed child process (thread-local).
  • $LOAD_PATH: Load path for searching Ruby scripts and extension libraries used by Kernel#load and Kernel#require. Aliased to $: and $-I. Has a singleton method $LOAD_PATH.resolve_feature_path(feature) that returns [:rb or :so, path], which resolves the feature to the path the original Kernel#require method would load.

  • $LOADED_FEATURES: The array contains the module names loaded by require. Aliased to $".
  • $DEBUG: The debug flag, which is set by the -d switch. Enabling debug output prints each exception raised to $stderr (but not its backtrace). Setting this to a true value enables debug output as if -d were given on the command line. Setting this to a false value disables debug output. Aliased to $-d.

  • $FILENAME: Current input filename from ARGF. Same as ARGF.filename.
  • $stderr: The current standard error output.
  • $stdin: The current standard input.
  • $stdout: The current standard output.
  • $VERBOSE: The verbose flag, which is set by the -w or -v switch. Setting this to a true value enables warnings as if -w or -v were given on the command line. Setting this to nil disables warnings, including from Kernel#warn. Aliased to $-v and $-w.

  • $-a: True if option -a is set. Read-only variable.
  • $-i: In in-place-edit mode, this variable holds the extension, otherwise nil.
  • $-l: True if option -l is set. Read-only variable.
  • $-p: True if option -p is set. Read-only variable.

Pre-defined global constants

  • TRUE: The typical true value. Deprecated.
  • FALSE: The false itself. Deprecated.
  • NIL: The nil itself. Deprecated.
  • STDIN: The standard input. The default value for $stdin.
  • STDOUT: The standard output. The default value for $stdout.
  • STDERR: The standard error output. The default value for $stderr.
  • ENV: The hash contains current environment variables.
  • ARGF: The virtual concatenation of the files given on command line (or from $stdin if no files were given).

  • ARGV: An Array of command line arguments given for the script.
  • DATA: The file object of the script, pointing just after __END__.
  • TOPLEVEL_BINDING: The Binding of the top level scope.
  • RUBY_VERSION: The Ruby language version.
  • RUBY_RELEASE_DATE: The release date string.
  • RUBY_PLATFORM: The platform identifier.
  • RUBY_PATCHLEVEL: The patchlevel for this Ruby. If this is a development build of Ruby the patchlevel will be -1.

  • RUBY_REVISION: The GIT commit hash for this Ruby.
  • RUBY_COPYRIGHT: The copyright string for Ruby.
  • RUBY_ENGINE: The name of the Ruby implementation.
  • RUBY_ENGINE_VERSION: The version of the Ruby implementation.
  • RUBY_DESCRIPTION: The same as ruby --version, a String describing various aspects of the Ruby implementation.

English

English standard library provides longer, more readable names for predefined global variables.

Without ‘English’:

$\ = ' -- '
"waterbuffalo" =~ /buff/
print $', $$, "\n"

With English:

require "English"

$OUTPUT_FIELD_SEPARATOR = ' -- '
"waterbuffalo" =~ /buff/
print $POSTMATCH, $PID, "\n"

Below is a full list of descriptive aliases and their associated global variable:

  • $ERROR_INFO: $!
  • $ERROR_POSITION: $@
  • $FS: $;
  • $FIELD_SEPARATOR: $;
  • $OFS: $,
  • $OUTPUT_FIELD_SEPARATOR: $,
  • $RS: $/
  • $INPUT_RECORD_SEPARATOR: $/
  • $ORS: $\
  • $OUTPUT_RECORD_SEPARATOR: $\
  • $INPUT_LINE_NUMBER: $.
  • $NR: $.
  • $LAST_READ_LINE: $_
  • $DEFAULT_OUTPUT: $>
  • $DEFAULT_INPUT: $<
  • $PID: $$
  • $PROCESS_ID: $$
  • $CHILD_STATUS: $?
  • $LAST_MATCH_INFO: $~
  • $IGNORECASE: $=
  • $ARGV: $*
  • $MATCH: $&
  • $PREMATCH: $`
  • $POSTMATCH: $'
  • $LAST_PAREN_MATCH: $+

English Reference