Ruby | Pre-define Variables & Constants

Ruby Predefine Variables

Ruby contains a wide range of predefined variables. Every predefined variable has its own specification. You can use predefine variables to perform a specific task like when dealing with interpreter parameters or regular expressions. The list of predefined variables in Ruby as shown below:

Variables Description
$! It holds the exception information message set by the last ‘raise’. Alias of $ERROR_INFO.
$@ It holds an array of the backtrace of the last exception raised. Alias of $ERROR_POSITION.
$/ The input record separator, by default newline. If it is set to nil then the whole file will be read at once. Alias of $INPUT_RECORD_SEPARATOR.
$\ The output separator for the print and IO#write, nil by default. Alias of $OUTPUT_RECORD_SEPARATOR
$, The output field separator for the print and default separator for Array#join. Alias of $OUTPUT_FIELD_SEPARATOR.
$; It is the default separator for String#split. Alias of $FIELD_SEPARATOR.
$. It holds the current input line number read from the last file. Alias of $INPUT_LINE_NUMBER.
$< An object that gives access to the concatenation of the content of all the files given as a command line argument or $stdin. Alias of $DEFAULT_INPUT.
$> It is the destination of output for kernel.print and kernel.printf, the default value is $stdout. Alias of $DEFAULT_OUTPUT.
$& The string matched by the last pattern match. Alias of $MATCH.
$` The string to the left of the last pattern match. Alias of $PREMATCH.
$’ The string to the right of the last pattern match. Alias of $POSTMATCH.
$+ The string correlated to the last matched group in the last successful pattern matched. Alias of $LAST_PAREN_MATCH.
$1-$9 The string matched in the nth group of the last successful pattern matched.
$_ The last input line read by get or readline in the current scope. It is a local variable. Alias of $LAST_READ_LINE.
$~ It holds the information about the last match in the current scope. It is a local variables. Alias of $LAST_MATCH_INFO.
$-p It is true if option -p is set (loop mode is on). It is read-only variable.
$-l It is true if option -l is set (line-ending process is on). It is read-only variable.
$-i This variable hold the extension if in-place-edit mode is set otherwise nil.
$-a It is true if option -a is set (autosplit mode is one). It is read-only variable.
$-d The level of -d is switch. Alias of $DEBUG.
$-v The verbose flag. It is set by the -v switch. Alias of $VERBOSE.
$-K The character encoding of the source code. Alias of $KCODE.
$0 It contains the name of the script being executed.
$$ The process number of the current Ruby program being executed. Alias of $PROCESS_ID.
$? The status of the last child process terminated. Alias of $CHILD_STATUS.
$: Load paths for programs and binary module by load or required. Alias of $LOAD_PATH.
$FILENAME The name of current input file reads from $<. Same as $<.filename.
$stderr Current standard error output.
$stdin Current standard input.
$stdout Current standard output.
$= Flag for case-sensitive, nil by default.Alias of $IGNORECASE
$* Command line argument given for the program, also known as ARGV.Alias of ARGV.
$” Array contains the module name loaded by require.Alias of $LOAD_FEATURES.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Ruby program to illustrate the
# use of pre-defined Variables
  
# Using '$0' To know about the 
# script name 
puts "Script_name: ",$0;   
  
# Using ' #{$$}' to know about the total
# number of process in the script
puts "Total number of process in this script: #{$$}"
  
# Using $; as default separator 
# for String#split.
a = "1,2,3,4,5,6,7"
$; = ","
p a.split       
  
# Pattern matching
"Welcome to GeeksforGeeks Portal!" =~ /Geeks/
  
# use to print the string to the 
# left of the last pattern match
p $`
  
# use to print the string matched 
# by the last pattern match
p $&
  
# use to print the string to the 
# right of the last pattern match
p $'

chevron_right


Output:



Script_name: 
/var/www/service/usercode/969513068/source.rb
Total number of process in this script: 3950
["1", "2", "3", "4", "5", "6", "7"]
"Welcome to "
"Geeks"
"forGeeks Portal!"

Ruby Predefined Constants

Ruby contains many predefined constants. The list of predefined constants are shown below:

Constant Name Description
TRUE Equivalent to true.
FALSE Equivalent to false.
NIL Equivalent to nil.
STDIN Standard input and default value of $stdin.
STDOUT Standard output and default value of $stdout.
STDERR Standard output error and default value of $stderr.
RUBY_VERSION A string shows the version of Ruby interpreter.
RUBY_PLATFORM A string shows the platform of Ruby interpreter.
RUBY_RELEASE_DATE A string shows the release date of Ruby interpreter.
DATA The file object of the program, pointing just after the __END__. And not defined if __END__ is not present in the program.
ARGV An array holds the command-line arguments passed to the program. Alias of $*.
ARGF An object that gives the access to the virtual concatenation of files passed as command-line arguments. Alias of $<.
ENV It is a hash-like object, contains current environment variables.

Note: It is recommended to use true, false, and nil because TRUE, FALSE, and NIL are backward-compatible.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Ruby program to illustrate 
# pre-defined Constants
  
# To know about Ruby Version
a = RUBY_VERSION
puts "Current Version: #{a}"         
   
# To Know about Ruby Platform
b = RUBY_PLATFORM
puts "Platform of Ruby: #{b}"        
  
# To know about Ruby Release Date
c = RUBY_RELEASE_DATE
puts "Release date of Ruby: #{c}"    

chevron_right


Output:

Current Version: 2.3.1
Platform of Ruby: x86_64-linux-gnu
Release date of Ruby: 2016-04-26


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.