doc/language/globals.md
Some of the pre-defined global variables have synonyms that are available via module English. For each of those, the \English synonym is given.
To use the module:
require 'English'
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$! | $ERROR_INFO | \Exception object or nil | nil | Yes | Kernel#raise |
$@ | $ERROR_POSITION | \Array of backtrace positions or nil | nil | Yes | Kernel#raise |
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$~ | $LAST_MATCH_INFO | \MatchData object or nil | nil | No | Matcher methods |
$& | $MATCH | Matched substring or nil | nil | No | Matcher methods |
$` | $PRE_MATCH | Substring left of match or nil | nil | No | Matcher methods |
$' | $POST_MATCH | Substring right of match or nil | nil | No | Matcher methods |
$+ | $LAST_PAREN_MATCH | Last group matched or nil | nil | No | Matcher methods |
$1 | First group matched or nil | nil | Yes | Matcher methods | |
$2 | Second group matched or nil | nil | Yes | Matcher methods | |
| <tt>$n</tt> | <i>n</i>th group matched or nil | nil | Yes | Matcher methods |
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$/, $-0 | $INPUT_RECORD_SEPARATOR | Input record separator | Newline | No | |
$\ | $OUTPUT_RECORD_SEPARATOR | Output record separator | nil | No |
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$stdin | Standard input stream | STDIN | No | ||
$stdout | Standard output stream | STDOUT | No | ||
$stderr | Standard error stream | STDERR | No | ||
$< | $DEFAULT_INPUT | Default standard input | ARGF | Yes | |
$> | $DEFAULT_OUTPUT | Default standard output | STDOUT | No | |
$. | $INPUT_LINE_NUMBER, $NR | Input position of most recently read stream | 0 | No | Certain read methods |
$_ | $LAST_READ_LINE | String from most recently read stream | nil | No | Certain read methods |
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$0, $PROGRAM_NAME | Program name | Program name | No | ||
$* | $ARGV | \ARGV array | ARGV | Yes | |
$$ | $PROCESS_ID, $PID | Process id | Process PID | Yes | |
$? | $CHILD_STATUS | Status of recently exited child | nil | Yes | |
$LOAD_PATH, $:, $-I | \Array of search paths | Ruby defaults | Yes | ||
$LOADED_FEATURES, $" | \Array of load paths | Ruby defaults | Yes |
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$FILENAME | Value returned by method ARGF.filename | Command-line argument or '-' | Yes | ||
$DEBUG | Whether option -d or --debug was given | Command-line option | No | ||
$VERBOSE | Whether option -V or -W was given | Command-line option | No |
| Variable | \English | Contains | Initially | Read-Only | Reset By |
|---|---|---|---|---|---|
$-F, $; | Separator given with command-line option -F | ||||
$-a | Whether option -a was given | Yes | |||
$-i | Extension given with command-line option -i | No | |||
$-l | Whether option -l was given | Yes | |||
$-p | Whether option -p was given | Yes | |||
$F | \Array of $_ split by $-F |
$! (\Exception)Contains the Exception object set by Kernel#raise:
begin
raise RuntimeError.new('Boo!')
rescue RuntimeError
p $!
end
Output:
#<RuntimeError: Boo!>
English - $ERROR_INFO
$@ (Backtrace)Same as $!.backtrace;
returns an array of backtrace positions:
begin
raise RuntimeError.new('Boo!')
rescue RuntimeError
pp $@.take(4)
end
Output:
["(irb):338:in `<top (required)>'",
"/snap/ruby/317/lib/ruby/3.2.0/irb/workspace.rb:119:in `eval'",
"/snap/ruby/317/lib/ruby/3.2.0/irb/workspace.rb:119:in `evaluate'",
"/snap/ruby/317/lib/ruby/3.2.0/irb/context.rb:502:in `evaluate'"]
English - $ERROR_POSITION.
These global variables store information about the most recent successful match in the current scope.
For details and examples, see {Regexp Global Variables}[rdoc-ref:Regexp@Global+Variables].
$~ (\MatchData)MatchData object created from the match; thread-local and frame-local.
English - $LAST_MATCH_INFO.
$& (Matched Substring)The matched string.
English - $MATCH.
$` (Pre-Match Substring)The string to the left of the match.
English - $PREMATCH.
$' (Post-Match Substring)The string to the right of the match.
English - $POSTMATCH.
$+ (Last Matched Group)The last group matched.
English - $LAST_PAREN_MATCH.
$1, $2, \Etc. (Matched Group)For <tt>$n</tt> the <i>n</i>th group of the match.
No \English.
$/ (Input Record Separator)An input record separator, initially newline.
Set by the command-line option -0.
Setting to non-nil value by other than the command-line option is deprecated.
English - $INPUT_RECORD_SEPARATOR, $RS.
Aliased as $-0.
$\ (Output Record Separator)An output record separator, initially nil.
Copied from $/ when the command-line option -l is
given.
Setting to non-nil value by other than the command-line option is deprecated.
English - $OUTPUT_RECORD_SEPARATOR, $ORS.
$stdin (Standard Input)The current standard input stream; initially:
$stdin # => #<IO:<STDIN>>
$stdout (Standard Output)The current standard output stream; initially:
$stdout # => #<IO:<STDOUT>>
$stderr (Standard Error)The current standard error stream; initially:
$stderr # => #<IO:<STDERR>>
$< (\ARGF or $stdin)Points to stream ARGF if not empty, else to stream $stdin; read-only.
English - $DEFAULT_INPUT.
$> (Default Standard Output)An output stream, initially $stdout.
English - $DEFAULT_OUTPUT
$. (Input Position)The input position (line number) in the most recently read stream.
English - $INPUT_LINE_NUMBER, $NR
$_ (Last Read Line)The line (string) from the most recently read stream.
English - $LAST_READ_LINE.
$0Initially, contains the name of the script being executed; may be reassigned.
$* (\ARGV)Points to ARGV.
English - $ARGV.
$$ (Process ID)The process ID of the current process. Same as Process.pid.
English - $PROCESS_ID, $PID.
$? (Child Status)Initially nil, otherwise the Process::Status object
created for the most-recently exited child process;
thread-local.
English - $CHILD_STATUS.
$LOAD_PATH (Load Path)Contains the array of paths to be searched by Kernel#load and Kernel#require.
Singleton method $LOAD_PATH.resolve_feature_path(feature)
returns:
path is the path to the Ruby file to be
loaded for the given feature.path is the path to the shared object file
to be loaded for the given feature.nil if there is no such feature and path.Examples:
$LOAD_PATH.resolve_feature_path('timeout')
# => [:rb, "/snap/ruby/317/lib/ruby/3.2.0/timeout.rb"]
$LOAD_PATH.resolve_feature_path('date_core')
# => [:so, "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/date_core.so"]
$LOAD_PATH.resolve_feature_path('foo')
# => nil
Aliased as $: and $-I.
$LOADED_FEATURESContains an array of the paths to the loaded files:
$LOADED_FEATURES.take(10)
# =>
["enumerator.so",
"thread.rb",
"fiber.so",
"rational.so",
"complex.so",
"ruby2_keywords.rb",
"/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so",
"/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so",
"/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/rbconfig.rb",
"/snap/ruby/317/lib/ruby/3.2.0/rubygems/compatibility.rb"]
Aliased as $".
$FILENAMEThe value returned by method ARGF.filename.
$DEBUGInitially true if command-line option -d or
--debug is given, otherwise initially false;
may be set to either value in the running program.
When true, prints each raised exception to $stderr.
Aliased as $-d.
$VERBOSEInitially true if command-line option -v or
-w is given, otherwise initially false;
may be set to either value, or to nil, in the running program.
When true, enables Ruby warnings.
When nil, disables warnings, including those from Kernel#warn.
Aliased as $-v and $-w.
$-FThe default field separator in String#split; must be a String or a
Regexp, and can be set with command-line option -F.
Setting to non-nil value by other than the command-line option is deprecated.
Aliased as $;.
$-aWhether command-line option -a was given; read-only.
$-iContains the extension given with command-line option -i,
or nil if none.
An alias of ARGF.inplace_mode.
$-lWhether command-line option -l was set; read-only.
$-pWhether command-line option -p was given; read-only.
$FIf the command-line option -a is given, the array
obtained by splitting $_ by $-F is assigned at the start of each
-l/-p loop.
$=$,| Constant | Contains |
|---|---|
STDIN | Standard input stream. |
STDOUT | Standard output stream. |
STDERR | Standard error stream. |
| Constant | Contains |
|---|---|
ENV | Hash of current environment variable names and values. |
ARGF | String concatenation of files given on the command line, or $stdin if none. |
ARGV | Array of the given command-line arguments. |
TOPLEVEL_BINDING | Binding of the top level scope. |
RUBY_VERSION | String Ruby version. |
RUBY_RELEASE_DATE | String Ruby release date. |
RUBY_PLATFORM | String Ruby platform. |
RUBY_PATCH_LEVEL | String Ruby patch level. |
RUBY_REVISION | String Ruby revision. |
RUBY_COPYRIGHT | String Ruby copyright. |
RUBY_ENGINE | String Ruby engine. |
RUBY_ENGINE_VERSION | String Ruby engine version. |
RUBY_DESCRIPTION | String Ruby description. |
| Constant | Contains |
|---|---|
DATA | File containing embedded data (lines following __END__, if any). |
STDINThe standard input stream (the default value for $stdin):
STDIN # => #<IO:<STDIN>>
STDOUTThe standard output stream (the default value for $stdout):
STDOUT # => #<IO:<STDOUT>>
STDERRThe standard error stream (the default value for $stderr):
STDERR # => #<IO:<STDERR>>
ENVA hash of the contains current environment variables names and values:
ENV.take(5)
# =>
[["COLORTERM", "truecolor"],
["DBUS_SESSION_BUS_ADDRESS", "unix:path=/run/user/1000/bus"],
["DESKTOP_SESSION", "ubuntu"],
["DISPLAY", ":0"],
["GDMSESSION", "ubuntu"]]
ARGFThe virtual concatenation of the files given on the command line, or from
$stdin if no files were given, "-" is given, or after
all files have been read.
ARGVAn array of the given command-line arguments.
TOPLEVEL_BINDINGThe Binding of the top level scope:
TOPLEVEL_BINDING # => #<Binding:0x00007f58da0da7c0>
RUBY_VERSIONThe Ruby version:
RUBY_VERSION # => "3.2.2"
RUBY_RELEASE_DATEThe release date string:
RUBY_RELEASE_DATE # => "2023-03-30"
RUBY_PLATFORMThe platform identifier:
RUBY_PLATFORM # => "x86_64-linux"
RUBY_PATCHLEVELThe integer patch level for this Ruby:
RUBY_PATCHLEVEL # => 53
For a development build the patch level will be -1.
RUBY_REVISIONThe git commit hash for this Ruby:
RUBY_REVISION # => "e51014f9c05aa65cbf203442d37fef7c12390015"
RUBY_COPYRIGHTThe copyright string:
RUBY_COPYRIGHT
# => "ruby - Copyright (C) 1993-2023 Yukihiro Matsumoto"
RUBY_ENGINEThe name of the Ruby implementation:
RUBY_ENGINE # => "ruby"
RUBY_ENGINE_VERSIONThe version of the Ruby implementation:
RUBY_ENGINE_VERSION # => "3.2.2"
RUBY_DESCRIPTIONThe description of the Ruby implementation:
RUBY_DESCRIPTION
# => "ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]"
DATADefined if and only if the program has this line:
__END__
When defined, DATA is a File object
containing the lines following the __END__,
positioned at the first of those lines:
p DATA
DATA.each_line { |line| p line }
__END__
Foo
Bar
Baz
Output:
#<File:t.rb>
"Foo\n"
"Bar\n"
"Baz\n"