2001-09-08 18:17:53 +04:00
|
|
|
.\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
|
1998-01-16 15:13:05 +03:00
|
|
|
.na
|
2000-09-12 09:37:38 +04:00
|
|
|
.TH RUBY 1 "ruby 1.6" "2000-09-11" "Ruby Programmers Reference Guide"
|
1998-01-16 15:13:05 +03:00
|
|
|
.SH NAME
|
1999-01-20 07:59:39 +03:00
|
|
|
ruby - Interpreted object-oriented scripting language
|
1998-01-16 15:13:05 +03:00
|
|
|
.SH SYNOPSIS
|
|
|
|
.B ruby \c
|
|
|
|
[ \c
|
2000-05-24 08:34:26 +04:00
|
|
|
.BI --version \c
|
1998-01-16 15:13:05 +03:00
|
|
|
] [ \c
|
|
|
|
.BI -c \c
|
|
|
|
] [ \c
|
|
|
|
.BI -w \c
|
|
|
|
] [ \c
|
|
|
|
.BI -d \c
|
|
|
|
] [ \c
|
|
|
|
.BI -l \c
|
|
|
|
]
|
|
|
|
[ \c
|
|
|
|
.BI -p \c
|
|
|
|
] [ \c
|
|
|
|
.BI -n \c
|
|
|
|
] [ \c
|
|
|
|
.BI -a \c
|
|
|
|
] [ \c
|
|
|
|
.BI -s \c
|
|
|
|
] [ \c
|
1999-08-24 12:21:56 +04:00
|
|
|
.BI -0 "[octal]"\c
|
1998-01-16 15:13:05 +03:00
|
|
|
]
|
|
|
|
[ \c
|
|
|
|
.BI -K "c"\c
|
|
|
|
] [ \c
|
1999-08-24 12:21:56 +04:00
|
|
|
.BI -e "command"\c
|
1998-01-16 15:13:05 +03:00
|
|
|
] [ \c
|
|
|
|
.BI -F "pattern"\c
|
1999-09-18 08:48:51 +04:00
|
|
|
]
|
1998-01-16 15:13:05 +03:00
|
|
|
[ \c
|
|
|
|
.BI -i "[extension]"\c
|
|
|
|
] [ \c
|
|
|
|
.BI -I "dir"\c
|
|
|
|
] [ \c
|
1999-08-24 12:21:56 +04:00
|
|
|
.BI -r "library"\c
|
1999-09-18 08:48:51 +04:00
|
|
|
]
|
1998-01-16 15:13:05 +03:00
|
|
|
[ \c
|
|
|
|
.BI -S \c
|
|
|
|
] [ \c
|
|
|
|
.BI -v \c
|
|
|
|
] [ \c
|
1999-08-24 12:21:56 +04:00
|
|
|
.BI -x "[directory]"\c
|
1998-01-16 15:13:05 +03:00
|
|
|
] [ \c
|
2000-05-24 08:34:26 +04:00
|
|
|
.BI -C "directory"\c
|
1999-09-18 08:48:51 +04:00
|
|
|
]
|
1998-01-16 15:13:05 +03:00
|
|
|
[ \c
|
1999-09-18 08:48:51 +04:00
|
|
|
.BI -y \c
|
|
|
|
] [ \c
|
1998-01-16 15:13:05 +03:00
|
|
|
.BI -- \c
|
|
|
|
] [ programfile ] [ argument ] ...
|
1999-09-18 08:48:51 +04:00
|
|
|
|
1998-01-16 15:13:05 +03:00
|
|
|
.SH PREFACE
|
1999-01-20 07:59:39 +03:00
|
|
|
Ruby is an interpreted scripting language for quick and easy
|
|
|
|
object-oriented programming. It has many features to process text
|
|
|
|
files and to do system management tasks (as in Perl). It is simple,
|
1998-01-16 15:13:05 +03:00
|
|
|
straight-forward, and extensible.
|
1999-09-18 08:48:51 +04:00
|
|
|
.PP
|
1998-01-16 15:13:05 +03:00
|
|
|
If you want a language for easy object-oriented programming, or you
|
1999-01-20 07:59:39 +03:00
|
|
|
don't like the Perl ugliness, or you do like the concept of lisp, but
|
|
|
|
don't like too much parentheses, Ruby may be the language of your
|
1998-01-16 15:13:05 +03:00
|
|
|
choice.
|
|
|
|
.SH DESCRIPTION
|
|
|
|
Ruby's features are as follows:
|
|
|
|
.TP
|
|
|
|
.B "\(bu Interpretive"
|
1999-01-20 07:59:39 +03:00
|
|
|
Ruby is an interpreted language, so you don't have to recompile
|
|
|
|
programs written in Ruby to execute them.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Variables have no type (dynamic typing)"
|
1999-01-20 07:59:39 +03:00
|
|
|
Variables in Ruby can contain data of any type. You don't have to
|
|
|
|
worry about variable typing. Consequently, it has a weaker compile
|
|
|
|
time check.
|
|
|
|
.TP
|
1998-01-16 15:13:05 +03:00
|
|
|
.B "\(bu No declaration needed"
|
1999-01-20 07:59:39 +03:00
|
|
|
You can use variables in your Ruby programs without any declarations.
|
|
|
|
Variable names denote their scope, local, global, instance, etc.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Simple syntax"
|
1999-01-20 07:59:39 +03:00
|
|
|
Ruby has a simple syntax influenced slightly from Eiffel.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu No user-level memory management"
|
|
|
|
Ruby has automatic memory management. Objects no longer
|
|
|
|
referenced from anywhere are automatically collected by the
|
1999-01-20 07:59:39 +03:00
|
|
|
garbage collector built into the interpreter.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
1999-01-20 07:59:39 +03:00
|
|
|
.B "\(bu Everything is an object"
|
|
|
|
Ruby is the purely object-oriented language, and was so since its
|
|
|
|
creation. Even such basic data as integers are seen as objects.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Class, inheritance, methods"
|
1999-01-20 07:59:39 +03:00
|
|
|
Of course, as an object-oriented language, Ruby has such basic
|
|
|
|
features like classes, inheritance, and methods.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Singleton methods"
|
1999-01-20 07:59:39 +03:00
|
|
|
Ruby has the ability to define methods for certain objects. For
|
|
|
|
example, you can define a press-button action for certain widget by
|
|
|
|
defining a singleton method for the button. Or, you can make up your
|
|
|
|
own prototype based object system using singleton methods, if you want
|
|
|
|
to.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Mix-in by modules"
|
1999-08-24 12:21:56 +04:00
|
|
|
Ruby intentionally does not have the multiple inheritance as it is a
|
|
|
|
source of confusion. Instead, Ruby has the ability to share
|
|
|
|
implementations across the inheritance tree. This is often called
|
1999-01-20 07:59:39 +03:00
|
|
|
`Mix-in'.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Iterators"
|
|
|
|
Ruby has iterators for loop abstraction.
|
|
|
|
.TP
|
|
|
|
.B "\(bu Closures"
|
1999-01-20 07:59:39 +03:00
|
|
|
In Ruby, you can objectify the procedure.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Text processing and regular expression"
|
1999-01-20 07:59:39 +03:00
|
|
|
Ruby has a bunch of text processing features like in Perl.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Bignums"
|
1999-01-20 07:59:39 +03:00
|
|
|
With built-in bignums, you can for example calculate factorial(400).
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Exception handling"
|
|
|
|
As in Java(tm).
|
|
|
|
.TP
|
1999-01-20 07:59:39 +03:00
|
|
|
.B "\(bu Direct access to the OS"
|
|
|
|
Ruby can use most UNIX system calls, often used in system programming.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B "\(bu Dynamic loading"
|
1999-01-20 07:59:39 +03:00
|
|
|
On most UNIX systems, you can load object files into the Ruby
|
|
|
|
interpreter on-the-fly.
|
1998-01-16 15:13:05 +03:00
|
|
|
.PP
|
1999-01-20 07:59:39 +03:00
|
|
|
.SH COMMAND LINE OPTIONS
|
1998-01-16 15:13:05 +03:00
|
|
|
Ruby interpreter accepts following command-line options (switches).
|
1999-01-20 07:59:39 +03:00
|
|
|
They are quite similar to those of Perl.
|
1999-09-18 08:48:51 +04:00
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B -0[octal]
|
|
|
|
specifies the input record separator ($/) as an octal number. If no
|
1999-01-20 07:59:39 +03:00
|
|
|
digit is given, the null character is taken as the separator. Other
|
|
|
|
switches may follow the digits. -00 turns Ruby into paragraph mode. -
|
|
|
|
0777 makes Ruby read whole file at once as a single string since there
|
|
|
|
is no legal character with that value.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B -a
|
|
|
|
turns on auto-split mode when used with -n or -p. In auto-split
|
1999-01-20 07:59:39 +03:00
|
|
|
mode, Ruby executes
|
1998-01-16 15:13:05 +03:00
|
|
|
.nf
|
|
|
|
.ne 1
|
1999-09-18 08:48:51 +04:00
|
|
|
\& $F = $_.split
|
1998-01-16 15:13:05 +03:00
|
|
|
at beginning of each loop.
|
|
|
|
.fi
|
|
|
|
.TP
|
|
|
|
.B -c
|
1999-01-20 07:59:39 +03:00
|
|
|
causes Ruby to check the syntax of the script and exit without
|
|
|
|
executing. If there are no syntax errors, Ruby will print "Syntax
|
1998-01-16 15:13:05 +03:00
|
|
|
OK" to the standard output.
|
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B --copyright
|
|
|
|
prints the copyright notice.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
1999-08-13 09:45:20 +04:00
|
|
|
.B -d --debug
|
1999-08-24 12:21:56 +04:00
|
|
|
turns on debug mode. $DEBUG will set true.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B -e command
|
1999-09-18 08:48:51 +04:00
|
|
|
specifies script from command-line while telling Ruby to not
|
1999-01-20 07:59:39 +03:00
|
|
|
search argv for script filenames.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B -F pattern
|
1998-01-16 15:13:05 +03:00
|
|
|
specifies input field separator ($;).
|
|
|
|
.TP
|
1999-08-13 09:45:20 +04:00
|
|
|
.B -h --help
|
|
|
|
prints a summary of the options.
|
|
|
|
.TP
|
1998-01-16 15:13:05 +03:00
|
|
|
.B -i extension
|
|
|
|
specifies in-place-edit mode. The extension, if specified, is
|
|
|
|
added to old filename to make a backup copy.
|
|
|
|
example:
|
|
|
|
.nf
|
|
|
|
.ne 8
|
|
|
|
\& % echo matz > /tmp/junk
|
|
|
|
\& % cat /tmp/junk
|
|
|
|
\& matz
|
|
|
|
\& % ruby -p -i.bak -e '$_.upcase!' /tmp/junk
|
|
|
|
\& % cat /tmp/junk
|
|
|
|
\& MATZ
|
|
|
|
\& % cat /tmp/junk.bak
|
|
|
|
\& matz
|
|
|
|
.fi
|
|
|
|
.TP
|
|
|
|
.B -I directory
|
1999-01-20 07:59:39 +03:00
|
|
|
used to tell Ruby where to load the library scripts. Directory path
|
|
|
|
will be added to the load-path variable ($:').
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B -Kkcode
|
2000-09-12 09:37:38 +04:00
|
|
|
specifies KANJI (Japanese) encoding.
|
1999-08-24 12:21:56 +04:00
|
|
|
.TP
|
1998-01-16 15:13:05 +03:00
|
|
|
.B -l
|
1999-01-20 07:59:39 +03:00
|
|
|
enables automatic line-ending processing, which means to firstly set
|
1999-08-24 12:21:56 +04:00
|
|
|
$\e to the value of $/, and secondly chops every line read using chop!.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B -n
|
1999-01-20 07:59:39 +03:00
|
|
|
causes Ruby to assume the following loop around your script,
|
1998-01-16 15:13:05 +03:00
|
|
|
which makes it iterate over filename arguments somewhat like
|
|
|
|
sed -n or awk.
|
|
|
|
.nf
|
1999-09-18 08:48:51 +04:00
|
|
|
.ne 3
|
1998-01-16 15:13:05 +03:00
|
|
|
\& while gets
|
|
|
|
\& ...
|
|
|
|
\& end
|
|
|
|
.fi
|
|
|
|
.TP
|
|
|
|
.B -p
|
|
|
|
acts mostly same as -n switch, but print the value of variable
|
|
|
|
$_ at the each end of the loop.
|
|
|
|
example:
|
|
|
|
.nf
|
|
|
|
.ne 2
|
|
|
|
\& % echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
|
|
|
|
\& MATZ
|
|
|
|
.fi
|
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B -r library
|
|
|
|
causes Ruby to load the library using require. It is useful
|
1998-01-16 15:13:05 +03:00
|
|
|
with switches -n or -p.
|
|
|
|
.TP
|
|
|
|
.B -s
|
1999-01-20 07:59:39 +03:00
|
|
|
enables some switch parsing for switches after script name but before
|
|
|
|
any filename arguments (or before a --). Any switches found there are
|
|
|
|
removed from ARGV and set the corresponding variable in the script.
|
1998-01-16 15:13:05 +03:00
|
|
|
example:
|
|
|
|
.nf
|
1999-09-18 08:48:51 +04:00
|
|
|
.ne 3
|
1998-01-16 15:13:05 +03:00
|
|
|
\& #! /usr/local/bin/ruby -s
|
|
|
|
\& # prints "true" if invoked with `-xyz' switch.
|
1999-01-20 07:59:39 +03:00
|
|
|
\& print "true\en" if $xyz
|
1998-01-16 15:13:05 +03:00
|
|
|
.fi
|
|
|
|
.TP
|
|
|
|
.B -S
|
1999-01-20 07:59:39 +03:00
|
|
|
makes Ruby use the PATH environment variable to search for
|
1998-01-16 15:13:05 +03:00
|
|
|
script, unless if its name begins with a slash. This is used to
|
|
|
|
emulate #! on machines that don't support it, in the following
|
|
|
|
manner:
|
|
|
|
.nf
|
1999-09-18 08:48:51 +04:00
|
|
|
.ne 2
|
1998-01-16 15:13:05 +03:00
|
|
|
\& #! /usr/local/bin/ruby
|
1999-08-24 12:21:56 +04:00
|
|
|
\& # This line makes the next one a comment in ruby \e
|
1998-01-16 15:13:05 +03:00
|
|
|
\& exec /usr/local/bin/ruby -S $0 $*
|
|
|
|
.fi
|
1999-01-20 07:59:39 +03:00
|
|
|
On some systems $0 does not always contain the full pathname, so you
|
|
|
|
need -S switch to tell Ruby to search for the script if necessary. To
|
|
|
|
handle embedded spaces or such. A better construct than $* would be
|
|
|
|
${1+"$@"}, but it does not work if the script is being interpreted by
|
|
|
|
csh.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B -v --verbose
|
1999-01-20 07:59:39 +03:00
|
|
|
enables verbose mode. Ruby will print its version at the beginning,
|
1999-08-24 12:21:56 +04:00
|
|
|
and set the variable `$VERBOSE' to true. Some methods print extra
|
|
|
|
messages if this variable is true. If this switch is given, and no
|
1999-01-20 07:59:39 +03:00
|
|
|
other switches are present, Ruby quits after printing its version.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
1999-08-24 12:21:56 +04:00
|
|
|
.B -T[level]
|
1999-09-18 08:48:51 +04:00
|
|
|
turns on taint checks at the specified level (default 1).
|
1999-08-24 12:21:56 +04:00
|
|
|
.TP
|
1998-01-16 15:13:05 +03:00
|
|
|
.B --version
|
1999-01-20 07:59:39 +03:00
|
|
|
prints the version of Ruby interpreter.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B -w
|
|
|
|
enables verbose mode without printing version message at the
|
1999-01-20 07:59:39 +03:00
|
|
|
beginning. It set the `$VERBOSE' variable to true.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B -x[directory]
|
1999-01-20 07:59:39 +03:00
|
|
|
tells Ruby that the script is embedded in a message. Leading garbage
|
|
|
|
will be discarded until the first that starts with "#!" and contains
|
1999-09-18 08:48:51 +04:00
|
|
|
the string, "ruby". Any meaningful switches on that line will applied.
|
1999-01-20 07:59:39 +03:00
|
|
|
The end of script must be specified with either EOF, ^D (control-D),
|
|
|
|
^Z (control-Z), or reserved word __END__.If the directory name is
|
|
|
|
specified, Ruby will switch to that directory before executing script.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
2000-10-06 10:13:52 +04:00
|
|
|
.B -C directory
|
1999-01-20 07:59:39 +03:00
|
|
|
causes Ruby to switch to the directory.
|
1998-01-16 15:13:05 +03:00
|
|
|
.TP
|
|
|
|
.B -y --yydebug
|
1999-01-20 07:59:39 +03:00
|
|
|
turns on compiler debug mode. Ruby will print a bunch of internal
|
|
|
|
state messages during compiling scripts. You don't have to specify
|
|
|
|
this switch, unless you are going to debug the Ruby interpreter.
|
1998-01-16 15:13:05 +03:00
|
|
|
.PP
|
|
|
|
.SH AUTHOR
|
2001-09-08 18:17:53 +04:00
|
|
|
Ruby is designed and implemented by Yukihiro Matsumoto <matz@netlab.jp>.
|