== Pre-Defined Global Variables
Some of the pre-defined global variables have synonyms
that are available via module Engish.
For each of those, the \English synonym is given.
To use the module:
require 'English'
=== Exceptions
==== $! (\Exception)
Contains the Exception object set by Kernel#raise:
begin
raise RuntimeError.new('Boo!')
rescue RuntimeError
p $!
end
Output:
#
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 `'",
"/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.
=== Pattern Matching
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 $_n_ the _nth_ group of the match.
No \English.
=== Separators
==== $/ (Input Record Separator)
An input record separator, initially newline.
English - $INPUT_RECORD_SEPARATOR, $RS.
Aliased as $-0.
==== $; (Input Field Separator)
An input field separator, initially +nil+.
English - $FIELD_SEPARATOR, $FS.
Aliased as $-F.
==== $\\ (Output Record Separator)
An output record separator, initially +nil+.
English - $OUTPUT_RECORD_SEPARATOR, $ORS.
=== Streams
==== $stdin (Standard Input)
The current standard input stream; initially:
$stdin # => #>
==== $stdout (Standard Output)
The current standard output stream; initially:
$stdout # => #>
==== $stderr (Standard Error)
The current standard error stream; initially:
$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.
=== Processes
==== $0
Initially, 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:
- [:rb, _path_], where +path+ is the path to the Ruby file
to be loaded for the given +feature+.
- [:so+ _path_], where +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_FEATURES
Contains 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 $".
=== Debugging
==== $FILENAME
The value returned by method ARGF.filename.
==== $DEBUG
Initially +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.
==== $VERBOSE
Initially +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.
=== Other Variables
==== $-a
Whether command-line option -a was given; read-only.
==== $-i
Contains the extension given with command-line option -i,
or +nil+ if none.
An alias of ARGF.inplace_mode.
==== $-l
Whether command-line option -l was set; read-only.
==== $-p
Whether command-line option -p was given; read-only.
=== Deprecated
==== $=
==== $,
== Pre-Defined Global Constants
== Streams
==== STDIN
The standard input stream (the default value for $stdin):
STDIN # => #>
==== STDOUT
The standard output stream (the default value for $stdout):
STDOUT # => #>
==== STDERR
The standard error stream (the default value for $stderr):
STDERR # => #>
=== Enviroment
==== ENV
A 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"]]
==== ARGF
The 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.
==== ARGV
An array of the given command-line arguments.
==== TOPLEVEL_BINDING
The Binding of the top level scope:
TOPLEVEL_BINDING # => #
==== RUBY_VERSION
The Ruby version:
RUBY_VERSION # => "3.2.2"
==== RUBY_RELEASE_DATE
The release date string:
RUBY_RELEASE_DATE # => "2023-03-30"
==== RUBY_PLATFORM
The platform identifier:
RUBY_PLATFORM # => "x86_64-linux"
==== RUBY_PATCHLEVEL
The integer patch level for this Ruby:
RUBY_PATCHLEVEL # => 53
For a development build the patch level will be -1.
==== RUBY_REVISION
The git commit hash for this Ruby:
RUBY_REVISION # => "e51014f9c05aa65cbf203442d37fef7c12390015"
==== RUBY_COPYRIGHT
The copyright string:
RUBY_COPYRIGHT
# => "ruby - Copyright (C) 1993-2023 Yukihiro Matsumoto"
==== RUBY_ENGINE
The name of the Ruby implementation:
RUBY_ENGINE # => "ruby"
==== RUBY_ENGINE_VERSION
The version of the Ruby implementation:
RUBY_ENGINE_VERSION # => "3.2.2"
==== RUBY_DESCRIPTION
The description of the Ruby implementation:
RUBY_DESCRIPTION
# => "ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]"
=== Embedded \Data
==== DATA
Defined 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:
#
"Foo\n"
"Bar\n"
"Baz\n"