<?xml version='1.0' encoding='utf-8'?>
<pod xmlns="http://axkit.org/ns/2000/pod2xml">
<head>
	<title>perlvar - Perl predefined variables</title>
</head>
<sect1>
<title>perlvar - Perl predefined variables</title>
<para>
perlvar - Perl で定義済みの変数
</para>
</sect1>
<sect1>
<title>DESCRIPTION</title>
<sect2>
<title>Predefined Names</title>
<para>
(定義済みの変数)
</para>
<para>
The following names have special meaning to Perl.  Most 
punctuation names have reasonable mnemonics, or analogs in the
shells.  Nevertheless, if you wish to use long variable names,
you need only say
</para>
<para>
以下の名前は Perl では特別な意味を持ちます。
記号的な名前の多くは記憶法があるか、シェルでの類推が可能です。
それでも長い名前を使用したい場合には
</para>
<verbatim><![CDATA[
use English;
]]></verbatim>
<para>
at the top of your program.  This will alias all the short names to the
long names in the current package.  Some even have medium names,
generally borrowed from <strong>awk</strong>.
</para>
<para>
とプログラムの最初に書いてください。
これは、すべての短い名前の別名として、
カレントパッケージで長い名前を付けるものです。
<strong>awk</strong> から持ってきた中間的な名前を持っているものもあります。
</para>
<para>
If you don't mind the performance hit, variables that depend on the
currently selected filehandle may instead be set by calling an
appropriate object method on the IO::Handle object.  (Summary lines
below for this contain the word HANDLE.)  First you must say
</para>
<para>
性能を気にしないのなら、現在選択されているファイルハンドルに
依存する変数の場合には、代わりに IO::Handle オブジェクトに
関するオブジェクトメソッドを呼び出して設定することができます。
(以下の要約では HANDLE という語を含んでいます。)
まず最初に必ず、
</para>
<verbatim><![CDATA[
use IO::Handle;
]]></verbatim>
<para>
after which you may use either
</para>
<para>
と書き、その後で以下のように書くか、
</para>
<verbatim><![CDATA[
method HANDLE EXPR
]]></verbatim>
<para>
or more safely,
</para>
<para>
もしくはより安全に以下のように書きます:
</para>
<verbatim><![CDATA[
HANDLE->method(EXPR)
]]></verbatim>
<para>
Each method returns the old value of the IO::Handle attribute.
The methods each take an optional EXPR, which if supplied specifies the
new value for the IO::Handle attribute in question.  If not supplied,
most methods do nothing to the current value--except for
autoflush(), which will assume a 1 for you, just to be different.
Because loading in the IO::Handle class is an expensive operation, you should
learn how to use the regular built-in variables.
</para>
<para>
それぞれのメソッドは、IO::Handle 属性の昔の値を返します。
メソッドはそれぞれ EXPR をとることができ、指定した場合には、
問題の IO::Handle 属性の新しい値を指定することになります。
指定しない場合には、多くのメソッドでは現在の値に対して何もしませんが、
autoflush() では 1 を指定されたものとします。
IO::Handle クラスを読み込むのはコストの高い操作なので、
通常の組み込み変数の使い方を覚えるべきです。
</para>
<para>
A few of these variables are considered &quot;read-only&quot;.  This means that if
you try to assign to this variable, either directly or indirectly through
a reference, you'll raise a run-time exception.
</para>
<para>
これらの変数の中には &quot;read-only&quot; として扱われるものもあります。
つまり、そういった変数に対して、直接にしろ、リファレンスを
介して間接にしろ、代入を行なおうとした場合には、実行時に
例外処理が起動されます。
</para>
<para>
The following list is ordered by scalar variables first, then the
arrays, then the hashes.
</para>
<para>
以下のリストはまずスカラ変数、それから配列、ハッシュの順に
並んでいます。
</para>
<list>
<item><itemtext>$ARG</itemtext>
</item>
<item><itemtext>$_</itemtext>
<para>
The default input and pattern-searching space.  The following pairs are
equivalent:
</para>
<para>
デフォルトの入力とパターン検索のスペース。
以下の 2つは同値です:
</para>
<verbatim><![CDATA[
while (<>) {...}	# equivalent only in while!
while (defined($_ = <>)) {...}
]]></verbatim>
<verbatim><![CDATA[
/^Subject:/
$_ =~ /^Subject:/
]]></verbatim>
<verbatim><![CDATA[
tr/a-z/A-Z/
$_ =~ tr/a-z/A-Z/
]]></verbatim>
<verbatim><![CDATA[
chomp
chomp($_)
]]></verbatim>
<para>
Here are the places where Perl will assume $_ even if you
don't use it:
</para>
<para>
Perl が(あなたが使いたくなくても) $_ を仮定する場合がいくつかあります。
</para>
</item>
<list>
<item><para>
Various unary functions, including functions like ord() and int(), as well
as the all file tests (<code>-f</code>, <code>-d</code>) except for <code>-t</code>, which defaults to
STDIN.
</para>
<para>
様々な単項関数。ord() や int()、また <code>-t</code> 以外の全ての
ファイルテスト (<code>-f</code>, <code>-d</code>)など。<code>-t</code> のデフォルトは STDIN です。
</para>
</item>
<item><para>
Various list functions like print() and unlink().
</para>
<para>
print() や unlink() などの様々なリスト関数。
</para>
</item>
<item><para>
The pattern matching operations <code>m//</code>, <code>s///</code>, and <code>tr///</code> when used
without an <code>=~</code> operator.
</para>
<para>
<code>=~</code> 演算子なしで用いられたパターンマッチ演算 <code>m//</code>, <code>s///</code>, <code>tr///</code>。
</para>
</item>
<item><para>
The default iterator variable in a <code>foreach</code> loop if no other
variable is supplied.
</para>
<para>
<code>foreach</code> ループでの他の変数が補われなかった場合のデフォルトの
繰り返し変数。
</para>
</item>
<item><para>
The implicit iterator variable in the grep() and map() functions.
</para>
<para>
grep() 関数と map() 関数の暗黙の繰り返し変数。
</para>
</item>
<item><para>
The default place to put an input record when a <code>&lt;FH&gt;</code>
operation's result is tested by itself as the sole criterion of a <code>while</code>
test.  Outside a <code>while</code> test, this will not happen.
</para>
<para>
<code>&lt;FH&gt;</code> が単独で <code>while</code> テストでテストされた場合の
結果を入れるデフォルトの場所。
<code>while</code> テスト以外ではこれは起こりません。
</para>
</item>
</list>
<para>
(Mnemonic: underline is understood in certain operations.)
</para>
<para>
(記憶法: 下線はある操作を覚えるためのもの。)
</para>
</list>
<list>
<item><itemtext>$&lt;<emphasis>digits</emphasis>&gt;</itemtext>
<para>
Contains the subpattern from the corresponding set of capturing
parentheses from the last pattern match, not counting patterns
matched in nested blocks that have been exited already.  (Mnemonic:
like \digits.)  These variables are all read-only and dynamically
scoped to the current BLOCK.
</para>
<para>
最後のパターンマッチで対応する括弧のサブパターンにマッチした
文字列が入っているが、既に抜けてしまったブロックでの
パターンマッチは勘定に入れない。
(記憶法: \(数字) のようなもの。)
これらの変数はすべて read-onlyで、現在の BLOCK に動的なスコープを持ちます。
</para>
</item>
<item><itemtext>$MATCH</itemtext>
</item>
<item><itemtext>$&amp;</itemtext>
<para>
The string matched by the last successful pattern match (not counting
any matches hidden within a BLOCK or eval() enclosed by the current
BLOCK).  (Mnemonic: like &amp; in some editors.)  This variable is read-only
and dynamically scoped to the current BLOCK.
</para>
<para>
最後に成功したパターンマッチでマッチした文字列 (現在の
BLOCK で囲まれた BLOCK や eval() で隠れている部分でのマッチは
勘定に入れない)。
(記憶法: あるエディタの &amp; ようなもの。) 
この変数は read-only で、現在の BLOCK に動的なスコープを持ちます。
</para>
<para>
The use of this variable anywhere in a program imposes a considerable
performance penalty on all regular expression matches.  See <link xref='BUGS'>BUGS</link>.
</para>
<para>
この変数をプログラムのどこかで使うと、プログラム中の全ての正規表現
マッチングにおいてかなりの性能低下を引き起こします。
<link xref='BUGS'>BUGS</link> を参照して下さい。
</para>
</item>
<item><itemtext>$PREMATCH</itemtext>
</item>
<item><itemtext>$`</itemtext>
<para>
The string preceding whatever was matched by the last successful
pattern match (not counting any matches hidden within a BLOCK or eval
enclosed by the current BLOCK).  (Mnemonic: <code>`</code> often precedes a quoted
string.)  This variable is read-only.
</para>
<para>
最後の成功したパターンマッチ (現在のBLOCK で囲まれた
BLOCK や eval() に隠れている部分でのマッチは勘定に入れない) で
マッチした部分の前の文字列。
(記憶法: <code>`</code> は多くの場合クォートされた文字列の前にある。)
この変数は read-only です。
</para>
<para>
The use of this variable anywhere in a program imposes a considerable
performance penalty on all regular expression matches.  See <link xref='BUGS'>BUGS</link>.
</para>
<para>
この変数をプログラムのどこかで使うと、プログラム中の全ての正規表現
マッチングにおいてかなりの性能低下を引き起こします。
<link xref='BUGS'>BUGS</link> を参照して下さい。
</para>
</item>
<item><itemtext>$POSTMATCH</itemtext>
</item>
<item><itemtext>$'</itemtext>
<para>
The string following whatever was matched by the last successful
pattern match (not counting any matches hidden within a BLOCK or eval()
enclosed by the current BLOCK).  (Mnemonic: <code>'</code> often follows a quoted
string.)  Example:
</para>
<para>
最後の成功したパターンマッチ (現在のBLOCK で囲まれた
BLOCK や eval() に隠れている部分でのマッチは勘定に入れない) で
マッチした部分に続く文字列。
(記憶法: <code>'</code> は多くの場合クォートされた文字列の後にある。)　例:
</para>
<verbatim><![CDATA[
$_ = 'abcdefghi';
/def/;
print "$`:$&:$'\n";  	# prints abc:def:ghi
]]></verbatim>
<para>
This variable is read-only and dynamically scoped to the current BLOCK.
</para>
<para>
この変数は read-only で、現在の BLOCK に動的なスコープを持ちます。
</para>
<para>
The use of this variable anywhere in a program imposes a considerable
performance penalty on all regular expression matches.  See <link xref='BUGS'>BUGS</link>.
</para>
<para>
この変数をプログラムのどこかで使うと、プログラム中の全ての正規表現
マッチングにおいてかなりの性能低下を引き起こします。
<link xref='BUGS'>BUGS</link> を参照して下さい。
</para>
</item>
<item><itemtext>$LAST_PAREN_MATCH</itemtext>
</item>
<item><itemtext>$+</itemtext>
<para>
The last bracket matched by the last search pattern.  This is useful if
you don't know which one of a set of alternative patterns matched.  For
example:
</para>
<para>
最後に検索されたパターンの最後の括弧にマッチした文字列。
これはいくつかの選択肢の中でどれがマッチするのか
わからないような場合に使うと便利です。たとえば:
</para>
<verbatim><![CDATA[
/Version: (.*)|Revision: (.*)/ && ($rev = $+);
]]></verbatim>
<para>
(Mnemonic: be positive and forward looking.)
This variable is read-only and dynamically scoped to the current BLOCK.
</para>
<para>
(記憶法: ポジティブで前向き。)
この変数は read-only で、現在の BLOCK に動的なスコープを持ちます。
</para>
</item>
<item><itemtext>@LAST_MATCH_END</itemtext>
</item>
<item><itemtext>@+</itemtext>
<para>
This array holds the offsets of the ends of the last successful
submatches in the currently active dynamic scope.  <code>$+[0]</code> is
the offset into the string of the end of the entire match.  This
is the same value as what the <code>pos</code> function returns when called
on the variable that was matched against.  The <emphasis>n</emphasis>th element
of this array holds the offset of the <emphasis>n</emphasis>th submatch, so
<code>$+[1]</code> is the offset past where $1 ends, <code>$+[2]</code> the offset
past where $2 ends, and so on.  You can use <code>$#+</code> to determine
how many subgroups were in the last successful match.  See the
examples given for the <code>@-</code> variable.
</para>
<para>
この配列は、現在アクティブな動的スコープで最後に成功した
サブマッチの最後へのオフセットを保持します。
<code>$+[0]</code> はマッチ全体の文字列の最後へのオフセットです。
これはマッチした変数に対して <code>pos</code> 関数を呼び出したときの
返り値と同じです。
この配列の <emphasis>n</emphasis> 番目の要素は <emphasis>n</emphasis> 番目のサブマッチのオフセットを
保持していますので、<code>$+[1]</code> は過去の $1 の終わりのオフセット、
<code>$+[2]</code> は $2 のオフセット、という形になります。
<code>$#+</code> は最後に成功したマッチでいくつサブグループがあるかを
決定するのに使えます。
<code>@-</code> 変数の例を参照して下さい。
</para>
</item>
<item><itemtext>$MULTILINE_MATCHING</itemtext>
</item>
<item><itemtext>$*</itemtext>
<para>
Set to a non-zero integer value to do multi-line matching within a
string, 0 (or undefined) to tell Perl that it can assume that strings
contain a single line, for the purpose of optimizing pattern matches.
Pattern matches on strings containing multiple newlines can produce
confusing results when <code>$*</code> is 0 or undefined. Default is undefined.
(Mnemonic: * matches multiple things.) This variable influences the
interpretation of only <code>^</code> and <code>$</code>. A literal newline can be searched
for even when <code>$* == 0</code>.
</para>
<para>
文字列中で複数行マッチを行なうために非ゼロに設定し、
0 (または undef)にすると、Perl が文字列に 1 行しか無いと仮定して、
ある種のパターンマッチに関する最適化を行なうようになります。
複数の改行を含む文字列でのパターンマッチを
<code>$*</code> が 0 または undef のまま行なうと結果は信用の
ないものになります。
デフォルトでは undef になっています。
(記憶法: * は複数のものにマッチします。)
この変数は <code>^</code> と <code>$</code> の解釈にのみ影響します。
リテラルの改行文字は、<code>$* == 0</code> であっても検索することが可能です。
</para>
<para>
Use of <code>$*</code> is deprecated in modern Perl, supplanted by 
the <code>/s</code> and <code>/m</code> modifiers on pattern matching.
</para>
<para>
最近の Perl では &quot;$*&quot; を使わないようにしてください。
パターンマッチの <code>/s</code> と <code>/m</code> の修飾子に取って代わられています。
</para>
<para>
Assigning a non-numerical value to <code>$*</code> triggers a warning (and makes
<code>$*</code> act if <code>$* == 0</code>), while assigning a numerical value to <code>$*</code>
makes that an implicit <code>int</code> is applied on the value.
</para>
<para>
数値でない値を <code>$*</code> に代入すると警告を引き起こします
(そして <code>$*</code> は <code>$* == 0</code> のように振る舞います)。
一方数値を <code>$*</code> に代入すると暗黙に <code>int</code> が値に適用されます。
</para>
</item>
<item><itemtext>input_line_number HANDLE EXPR</itemtext>
</item>
<item><itemtext>$INPUT_LINE_NUMBER</itemtext>
</item>
<item><itemtext>$NR</itemtext>
</item>
<item><itemtext>$.</itemtext>
<para>
The current input record number for the last file handle from which
you just read() (or called a <code>seek</code> or <code>tell</code> on).  The value
may be different from the actual physical line number in the file,
depending on what notion of &quot;line&quot; is in effect--see <code>$/</code> on how
to change that.  An explicit close on a filehandle resets the line
number.  Because <code>&lt;&gt;</code> never does an explicit close, line
numbers increase across ARGV files (but see examples in <link xref='perlfunc#eof'>perlfunc/eof</link>).
Consider this variable read-only: setting it does not reposition
the seek pointer; you'll have to do that on your own.  Localizing <code>$.</code>
has the effect of also localizing Perl's notion of &quot;the last read
filehandle&quot;.  (Mnemonic: many programs use &quot;.&quot; to mean the current line
number.)
</para>
<para>
最後にread() (または <code>seek</code> または <code>tell</code>)を
行なったファイルハンドルの現在の入力レコード番号。
この値はファイルの実際の物理行番号とは異なるかもしれません。
「行」とは何かによります。
これを変えるには <code>$/</code> を参照して下さい。
明示的にファイルハンドルをクローズした場合に、行番号がリセットされます。
<code>&lt;&gt;</code> 構文では明示的にクローズを行ないませんから、ARGV の
ファイルに跨って行番号が数えられることになります (が、
<link xref='perlfunc#eof'>perlfunc/eof</link> の例を参照してください)。
この変数は読み込み専用と考えてください。
値を設置してもシークポインタは移動しません。自力でする必要があります。
<code>$.</code>を local 化すると、Perl の「最後に読んだファイルハンドル」を
local 化する効果があります。
(記憶法: 多くのプログラムで &quot;.&quot; が現在行番号を示すように使われています。)
</para>
</item>
<item><itemtext>input_record_separator HANDLE EXPR</itemtext>
</item>
<item><itemtext>$INPUT_RECORD_SEPARATOR</itemtext>
</item>
<item><itemtext>$RS</itemtext>
</item>
<item><itemtext>$/</itemtext>
<para>
The input record separator, newline by default.  This 
influences Perl's idea of what a &quot;line&quot; is.  Works like <strong>awk</strong>'s RS
variable, including treating empty lines as a terminator if set to
the null string.  (An empty line cannot contain any spaces
or tabs.)  You may set it to a multi-character string to match a
multi-character terminator, or to <code>undef</code> to read through the end
of file.  Setting it to <code>&quot;\n\n&quot;</code> means something slightly
different than setting to <code>&quot;&quot;</code>, if the file contains consecutive
empty lines.  Setting to <code>&quot;&quot;</code> will treat two or more consecutive
empty lines as a single empty line.  Setting to <code>&quot;\n\n&quot;</code> will
blindly assume that the next input character belongs to the next
paragraph, even if it's a newline.  (Mnemonic: / delimits
line boundaries when quoting poetry.)
</para>
<para>
入力レコードセパレータで、デフォルトでは改行文字。
これは Perl での「行」とは何か、ということに影響を与えます。
空文字列に設定されると、空行をセパレータとして扱うことを
含めて、<strong>awk</strong> の変数 RS のように働きます
(空行はスペースやタブを含んでいてはいけません)。
複数文字の区切文字を示すために、文字列を設定することもできます。
また、ファイルの最後まで読み込むために undef を指定することもできます。
この変数に <code>&quot;\n\n&quot;</code> を設定すると、空行が続く場合において、
<code>&quot;&quot;</code> を設定した場合とわずかに違う動作をするようになります。
<code>&quot;&quot;</code> を設定した場合には、複数の空行も 1 つの空行であるかのように扱います。
<code>&quot;\n\n&quot;</code> を設定した場合には、単純に次の文字が (たとえ改行文字であっても)
次の段落に含まれるものとして扱います。
(記憶法: /は、詩を引用するときに、行の区切りを示します。)
</para>
<verbatim><![CDATA[
undef $/;		# enable "slurp" mode
$_ = <FH>;		# whole file now here
s/\n[ \t]+/ /g;
]]></verbatim>
<para>
Remember: the value of <code>$/</code> is a string, not a regex.  <strong>awk</strong> has to be
better for something. :-)
</para>
<para>
注意: <code>$/</code> は文字列であり、正規表現ではありません。
<strong>awk</strong> は何かもっとうまくやらなくてはいけません。:-)
</para>
<para>
Setting <code>$/</code> to a reference to an integer, scalar containing an integer, or
scalar that's convertible to an integer will attempt to read records
instead of lines, with the maximum record size being the referenced
integer.  So this:
</para>
<para>
<code>$/</code> に整数、整数を含むスカラ、整数に変換できるスカラのいずれかへの
リファレンスをセットすると、行を読む代わりにレコードを読もうとします。
この場合、最大レコードサイズはリファレンス先の整数値となります。つまり:
</para>
<verbatim><![CDATA[
$/ = \32768; # or \"32768", or \$var_containing_32768
open(FILE, $myfile);
$_ = <FILE>;
]]></verbatim>
<para>
will read a record of no more than 32768 bytes from FILE.  If you're
not reading from a record-oriented file (or your OS doesn't have
record-oriented files), then you'll likely get a full chunk of data
with every read.  If a record is larger than the record size you've
set, you'll get the record back in pieces.
</para>
<para>
これは FILE から 32768 バイトを超えないようにレコードを読み込みます。
もしレコード指向のファイルを読み込まない場合
(あるいは OS がレコード指向ファイルを持たない場合)、
読み込み毎にデータのチャンク全部を取り込みます。
もしレコードがセットしたレコードサイズより大きい場合、
レコードの部分を取り込みます。
</para>
<para>
On VMS, record reads are done with the equivalent of <code>sysread</code>,
so it's best not to mix record and non-record reads on the same
file.  (This is unlikely to be a problem, because any file you'd
want to read in record mode is probably unusable in line mode.)
Non-VMS systems do normal I/O, so it's safe to mix record and
non-record reads of a file.
</para>
<para>
VMS では、レコード読み込みは <code>sysread</code> と等価に行われますので、
レコード読み込みと非レコード読み込みを同じファイルで混ぜないのが
最善です。(これはあまり問題になりません。なぜなら
レコード読み込みしたいファイルは多分行モードでは使えないものだからです。)
VMS 以外のシステムでは普通の I/O を使いますので、
同じファイルのレコード読み込みと非レコード読み込みを混ぜても安全です。
</para>
<para>
See also <link xref='perlport#Newlines'>perlport/&quot;Newlines&quot;</link>.  Also see <code>$.</code>.
</para>
<para>
<link xref='perlport#Newlines'>perlport/&quot;Newlines&quot;</link> と <code>$.</code> も参照してください。
</para>
</item>
<item><itemtext>autoflush HANDLE EXPR</itemtext>
</item>
<item><itemtext>$OUTPUT_AUTOFLUSH</itemtext>
</item>
<item><itemtext>$|</itemtext>
<para>
If set to nonzero, forces a flush right away and after every write
or print on the currently selected output channel.  Default is 0
(regardless of whether the channel is really buffered by the
system or not; <code>$|</code> tells you only whether you've asked Perl
explicitly to flush after each write).  STDOUT will
typically be line buffered if output is to the terminal and block
buffered otherwise.  Setting this variable is useful primarily when
you are outputting to a pipe or socket, such as when you are running
a Perl program under <strong>rsh</strong> and want to see the output as it's
happening.  This has no effect on input buffering.  See <link xref='perlfunc#getc'>perlfunc/getc</link>
for that.  (Mnemonic: when you want your pipes to be piping hot.)
</para>
<para>
0 以外に設定されると、
その時点で選択されている出力チャネルを
直ちにその場でフラッシュし、
さらに write や print を行なうごとに、強制的にフラッシュします。
デフォルトでは 0 となっています
(チャンネルが実際にシステムによってバッファリングされているかどうかは
関知しません。<code>$|</code> は Perl が明示的に毎回書き込みの後に
フラッシュするかどうかのみを示します)。
STDOUT は通常では、端末への出力時には行バッファリング、
それ以外ではブロックバッファリングであることに注意してください。
これは、Perl のスクリプトを rsh 配下で実行して、
実行状況を確認したい場合のように、パイプやソケットに出力するときに特に便利でしょう。
これは入力バッファリングには何の影響も与えません。
(記憶法: パイプをホットな状態にしておくために使う。)
</para>
</item>
<item><itemtext>output_field_separator HANDLE EXPR</itemtext>
</item>
<item><itemtext>$OUTPUT_FIELD_SEPARATOR</itemtext>
</item>
<item><itemtext>$OFS</itemtext>
</item>
<item><itemtext>$,</itemtext>
<para>
The output field separator for the print operator.  Ordinarily the
print operator simply prints out its arguments without further
adornment.  To get behavior more like <strong>awk</strong>, set this variable as
you would set <strong>awk</strong>'s OFS variable to specify what is printed
between fields.  (Mnemonic: what is printed when there is a &quot;,&quot; in
your print statement.)
</para>
<para>
print 演算子のための出力フィールドセパレータ。
通常 print 演算子は、引数を修飾なしで単純に印字します。
より、<strong>awk</strong> に近い動作をさせるには、
フィールドの区切りとして印字されるものとして <strong>awk</strong> の
変数 OFS に設定するものを、この変数に設定します。
(記憶法: print 文で &quot;,&quot; を書いた場所に印字されるもの。)
</para>
</item>
<item><itemtext>output_record_separator HANDLE EXPR</itemtext>
</item>
<item><itemtext>$OUTPUT_RECORD_SEPARATOR</itemtext>
</item>
<item><itemtext>$ORS</itemtext>
</item>
<item><itemtext>$\</itemtext>
<para>
The output record separator for the print operator.  Ordinarily the
print operator simply prints out its arguments as is, with no
trailing newline or other end-of-record string added.  To get
behavior more like <strong>awk</strong>, set this variable as you would set
<strong>awk</strong>'s ORS variable to specify what is printed at the end of the
print.  (Mnemonic: you set <code>$\</code> instead of adding &quot;\n&quot; at the
end of the print.  Also, it's just like <code>$/</code>, but it's what you
get &quot;back&quot; from Perl.)
</para>
<para>
print 演算子のための出力レコードセパレータ。
通常print 演算子は、引数を単純に印字し、
改行などレコード終わりの文字列をつけません。
より <strong>awk</strong> に近い動作をさせるには、
print の最後に印字されるものとして <strong>awk</strong> の変数 ORS に
設定するものを、この変数に設定します。
(記憶法: print の最後に &quot;\n&quot; を付け加える代わりに <code>$\</code> を設定する。
また、<code>$/</code> に似通っているが、Perl から「バック」されるものです。)
</para>
</item>
<item><itemtext>$LIST_SEPARATOR</itemtext>
</item>
<item><itemtext>$&quot;</itemtext>
<para>
This is like <code>$,</code> except that it applies to array and slice values
interpolated into a double-quoted string (or similar interpreted
string).  Default is a space.  (Mnemonic: obvious, I think.)
</para>
<para>
<code>$,</code> と同様ですが、これは 2 重引用符で括られた文字列
(または、同様に扱われる文字列) 内で配列とスライスの値が展開される
際に適用されます。
デフォルトではスペースになっています。(記憶法: 明らかでしょう。)
</para>
</item>
<item><itemtext>$SUBSCRIPT_SEPARATOR</itemtext>
</item>
<item><itemtext>$SUBSEP</itemtext>
</item>
<item><itemtext>$;</itemtext>
<para>
The subscript separator for multidimensional array emulation.  If you
refer to a hash element as
</para>
<verbatim><![CDATA[
$foo{$a,$b,$c}
]]></verbatim>
<para>
it really means
</para>
<verbatim><![CDATA[
$foo{join($;, $a, $b, $c)}
]]></verbatim>
<para>
But don't put
</para>
<verbatim><![CDATA[
@foo{$a,$b,$c}	# a slice--note the @
]]></verbatim>
<para>
which means
</para>
<verbatim><![CDATA[
($foo{$a},$foo{$b},$foo{$c})
]]></verbatim>
<para>
多次元配列のエミュレートのための添え字の区切文字。
ハッシュの要素を
</para>
<verbatim><![CDATA[
$foo{$a,$b,$c}
]]></verbatim>
<para>
のようにして参照すると、実際には
</para>
<verbatim><![CDATA[
$foo{join($;, $a, $b, $c)}
]]></verbatim>
<para>
という意味になります。　しかし、
</para>
<verbatim><![CDATA[
@foo{$a,$b,$c}      # スライス -- @ に注意
]]></verbatim>
<para>
としてはいけません。これは以下の意味になります。
</para>
<verbatim><![CDATA[
($foo{$a},$foo{$b},$foo{$c})
]]></verbatim>
<para>
Default is &quot;\034&quot;, the same as SUBSEP in <strong>awk</strong>.  If your
keys contain binary data there might not be any safe value for <code>$;</code>.
(Mnemonic: comma (the syntactic subscript separator) is a
semi-semicolon.  Yeah, I know, it's pretty lame, but <code>$,</code> is already
taken for something more important.)
</para>
<para>
デフォルトは &quot;\034&quot; で、<code>awk</code> の SUBSEP と同じです。
使おうとしている key の値がバイナリのデータを含むならば、
<code>$;</code> に設定する安全な値などはないことになります。
(記憶法: コンマ (構文上の添え字区切り文字) は
セミ−セミコロンなのです。
ええ、詭弁だとはわかってますが、<code>$,</code> はもう既にもっと
重要な任務を持ってるんです。)
</para>
<para>
Consider using &quot;real&quot; multidimensional arrays as described
in <link xref='perllol'>perllol</link>.
</para>
<para>
<link xref='perllol'>perllol</link> で記述している「本物の」多次元配列を使うようにしてください。
</para>
</item>
<item><itemtext>$OFMT</itemtext>
</item>
<item><itemtext>$#</itemtext>
<para>
The output format for printed numbers.  This variable is a half-hearted
attempt to emulate <strong>awk</strong>'s OFMT variable.  There are times, however,
when <strong>awk</strong> and Perl have differing notions of what counts as 
numeric.  The initial value is &quot;%.<emphasis>n</emphasis>g&quot;, where <emphasis>n</emphasis> is the value
of the macro DBL_DIG from your system's <filename>float.h</filename>.  This is different from
<strong>awk</strong>'s default OFMT setting of &quot;%.6g&quot;, so you need to set <code>$#</code>
explicitly to get <strong>awk</strong>'s value.  (Mnemonic: # is the number sign.)
</para>
<para>
数字を印字する際の出力フォーマット。
この変数は、不十分ではありますが、<strong>awk</strong> の変数 OFMT を
エミュレートしようとするものです。
しかしながら、<strong>awk</strong> と Perl は異なる記法で数値を表わしています。
また、初期値は&quot;%.<emphasis>n</emphasis>g&quot; で、ここで <emphasis>n</emphasis> はシステムの <filename>float.h</filename> で
定義されているマクロ DBL_DIG の値です。
これは<strong>awk</strong> のOFMT のデフォルト値である &quot;%.6g&quot; と異なっていますので、
awk での値を得るには、明示的に <code>$#</code> を設定する必要があります。
(記憶法: # は数値記号です。)
</para>
<para>
Use of <code>$#</code> is deprecated.
</para>
<para>
<code>$#</code> は古いものなので使わないようにしてください。
</para>
</item>
<item><itemtext>format_page_number HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_PAGE_NUMBER</itemtext>
</item>
<item><itemtext>$%</itemtext>
<para>
The current page number of the currently selected output channel.
Used with formats.
(Mnemonic: % is page number in <strong>nroff</strong>.)
</para>
<para>
その時点で選択されている出力チャネルの、その時点でのページ番号。
フォーマットで用いられます。
(記憶法: % は、<strong>nroff</strong> でのページ番号です。)
</para>
</item>
<item><itemtext>format_lines_per_page HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_LINES_PER_PAGE</itemtext>
</item>
<item><itemtext>$=</itemtext>
<para>
The current page length (printable lines) of the currently selected
output channel.  Default is 60.  
Used with formats.
(Mnemonic: = has horizontal lines.)
</para>
<para>
その時点で選択されている出力チャネルの、その時点での
ページ長 (印字可能行数)。デフォルトは 60 です。
フォーマットで用いられます。
(記憶法: = には複数の水平線 (行) が含まれます。)
</para>
</item>
<item><itemtext>format_lines_left HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_LINES_LEFT</itemtext>
</item>
<item><itemtext>$-</itemtext>
<para>
The number of lines left on the page of the currently selected output
channel.  
Used with formats.
(Mnemonic: lines_on_page - lines_printed.)
</para>
<para>
その時点で選択されている出力チャネルの、ページに残っている行数。
フォーマットで用いられます。
(記憶法: &quot;ページ行数&quot; - &quot;印字済み行数&quot;)
</para>
</item>
<item><itemtext>@LAST_MATCH_START</itemtext>
</item>
<item><itemtext>@-</itemtext>
<para>
$-[0] is the offset of the start of the last successful match.
<code>$-[</code><emphasis>n</emphasis><code>]</code> is the offset of the start of the substring matched by
<emphasis>n</emphasis>-th subpattern, or undef if the subpattern did not match.
</para>
<para>
$-[0] は最後に成功したマッチの先頭のオフセットです。
<code>$-[</code><emphasis>n</emphasis><code>]</code> は <emphasis>n</emphasis> 番目のサブパターンにマッチした部分文字列の
先頭のオフセットです。サブパターンがマッチしなかった場合は undef です。
</para>
<para>
Thus after a match against $_, $&amp; coincides with <code>substr $_, $-[0],
$+[0] - $-[0]</code>.  Similarly, <code>$</code><emphasis>n</emphasis> coincides with <code>substr $_, $-[</code><emphasis>n</emphasis><code>],
$+[</code><emphasis>n</emphasis><code>] - $-[</code><emphasis>n</emphasis><code>]</code> if <code>$-[</code><emphasis>n</emphasis><code>]</code> is defined, and $+ coincides with
<code>substr $_, $-[$#-], $+[$#-]</code>.  One can use <code>$#-</code> to find the last
matched subgroup in the last successful match.  Contrast with
<code>$#+</code>, the number of subgroups in the regular expression.  Compare
with <code>@+</code>.
</para>
<para>
従って $_ のマッチの後、$&amp; は <code>substr $_, $-[0], $+[0] - $-[0]</code> と
一致します。同様に、<code>$</code><emphasis>n</emphasis> は、<code>$-[</code><emphasis>n</emphasis><code>]</code> が定義されていれば
<code>substr $_, $-[</code><emphasis>n</emphasis><code>], $+[</code><emphasis>n</emphasis><code>] - $-[</code><emphasis>n</emphasis><code>]</code> と一致し、
$+ は <code>substr $_, $-[$#-], $+[$#-]</code> と一致します。
<code>$#-</code> は直前に成功したマッチで最後のマッチしたサブグループを
探すのに使えます。
正規表現でのサブグループの数である <code>$#+</code> と対照的です。
<code>@+</code> と比較してください。
</para>
<para>
This array holds the offsets of the beginnings of the last
successful submatches in the currently active dynamic scope.
<code>$-[0]</code> is the offset into the string of the beginning of the
entire match.  The <emphasis>n</emphasis>th element of this array holds the offset
of the <emphasis>n</emphasis>th submatch, so <code>$+[1]</code> is the offset where $1
begins, <code>$+[2]</code> the offset where $2 begins, and so on.
You can use <code>$#-</code> to determine how many subgroups were in the
last successful match.  Compare with the <code>@+</code> variable.
</para>
<para>
この配列は現在アクティブな動的スコープ内で最後に成功した
サブマッチの先頭位置のオフセットを保持します。
<code>$-[0]</code> はマッチ全体の先頭の文字列へのオフセットです。
この配列の <emphasis>n</emphasis> 番目の要素は <emphasis>n</emphasis> 番目のサブマッチへの
オフセットを保持しますので、<code>$+[1]</code> は $1 の先頭への
オフセット、<code>$+[2]</code> は $2 の先頭へのオフセット、などとなります。
<code>$#-</code> を、最後に成功したマッチでいくつのサブグループがあるのかを
決定するのに使えます。
<code>@+</code> 変数と比較してください。
</para>
<para>
After a match against some variable $var:
</para>
<para>
ある変数 $var でマッチした後、以下のようになります。
</para>
</item>
<list>
<item><itemtext><code>$`</code> is the same as <code>substr($var, 0, $-[0])</code></itemtext>
</item>
<item><itemtext><code>$&amp;</code> is the same as <code>substr($var, $-[0], $+[0] - $-[0])</code></itemtext>
</item>
<item><itemtext><code>$'</code> is the same as <code>substr($var, $+[0])</code></itemtext>
</item>
<item><itemtext><code>$1</code> is the same as <code>substr($var, $-[1], $+[1] - $-[1])</code></itemtext>
</item>
<item><itemtext><code>$2</code> is the same as <code>substr($var, $-[2], $+[2] - $-[2])</code></itemtext>
</item>
<item><itemtext><code>$3</code> is the same as <code>substr $var, $-[3], $+[3] - $-[3])</code></itemtext>
</item>
<item><itemtext><code>$`</code> は <code>substr($var, 0, $-[0])</code> と同じです。</itemtext>
</item>
<item><itemtext><code>$&amp;</code> は <code>substr($var, $-[0], $+[0] - $-[0])</code> と同じです。</itemtext>
</item>
<item><itemtext><code>$'</code> は <code>substr($var, $+[0])</code> と同じです。</itemtext>
</item>
<item><itemtext><code>$1</code> は <code>substr($var, $-[1], $+[1] - $-[1])</code> と同じです。</itemtext>
</item>
<item><itemtext><code>$2</code> は <code>substr($var, $-[2], $+[2] - $-[2])</code> と同じです。</itemtext>
</item>
<item><itemtext><code>$3</code> は <code>substr $var, $-[3], $+[3] - $-[3])</code> と同じです。</itemtext>
</item>
</list>
<item><itemtext>format_name HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_NAME</itemtext>
</item>
<item><itemtext>$~</itemtext>
<para>
The name of the current report format for the currently selected output
channel.  Default is the name of the filehandle.  (Mnemonic: brother to
<code>$^</code>.)
</para>
<para>
その時点で選択されている出力チャネルの、その時点でのフォーマット名。
デフォルトでは、ファイルハンドルと同名です。
(記憶法: <code>$^</code> の兄弟。)
</para>
</item>
<item><itemtext>format_top_name HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_TOP_NAME</itemtext>
</item>
<item><itemtext>$^</itemtext>
<para>
The name of the current top-of-page format for the currently selected
output channel.  Default is the name of the filehandle with _TOP
appended.  (Mnemonic: points to top of page.)
</para>
<para>
その時点で選択されている出力チャネルの、その時点での
ページ先頭フォーマット名。
デフォルトでは、ファイルハンドル名に _TOP を続けたもの。
(記憶法: ページの先頭へのポインタ。)
</para>
</item>
<item><itemtext>format_line_break_characters HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_LINE_BREAK_CHARACTERS</itemtext>
</item>
<item><itemtext>$:</itemtext>
<para>
The current set of characters after which a string may be broken to
fill continuation fields (starting with ^) in a format.  Default is
&quot;{char:160}\n-&quot;, to break on whitespace or hyphens.  (Mnemonic: a &quot;colon&quot; in
poetry is a part of a line.)
</para>
<para>
フォーマットの充填継続フィールド (^ で始まるもの) への
文字列で行分割を許す文字集合。
デフォルトは &quot;{char:160}\n-&quot; で空白か改行の後で行分割が可能となっています。
(記憶法: 詩では「コロン」は、行の一部。)
</para>
</item>
<item><itemtext>format_formfeed HANDLE EXPR</itemtext>
</item>
<item><itemtext>$FORMAT_FORMFEED</itemtext>
</item>
<item><itemtext>$^L</itemtext>
<para>
What formats output as a form feed.  Default is \f.
</para>
<para>
フォーマット出力で、改ページのために出力されるもの。
デフォルトは \f。
</para>
</item>
<item><itemtext>$ACCUMULATOR</itemtext>
</item>
<item><itemtext>$^A</itemtext>
<para>
The current value of the write() accumulator for format() lines.  A format
contains formline() calls that put their result into <code>$^A</code>.  After
calling its format, write() prints out the contents of <code>$^A</code> and empties.
So you never really see the contents of <code>$^A</code> unless you call
formline() yourself and then look at it.  See <link xref='perlform'>perlform</link> and
<link xref='perlfunc#formline()'>perlfunc/formline()</link>.
</para>
<para>
format() 行のための、その時点での write() アキュムレータの値。
format には、<code>$^A</code> に結果を残す、formline() 呼び出しが含まれます。
自分のフォーマットを呼び出した後で、
write() は <code>$^A</code> の内容を出力してから消去します。
したがって、自分で formline() を呼び出すのでなければ、
<code>$^A</code> の値が見えることはありません。
<link xref='perlform'>perlform</link> と <link xref='perlfunc#formline()'>perlfunc/formline()</link> を参照してください。
</para>
</item>
<item><itemtext>$CHILD_ERROR</itemtext>
</item>
<item><itemtext>$?</itemtext>
<para>
The status returned by the last pipe close, backtick (<code>``</code>) command,
successful call to wait() or waitpid(), or from the system()
operator.  This is just the 16-bit status word returned by the
wait() system call (or else is made up to look like it).  Thus, the
exit value of the subprocess is really (<code>$? &gt;&gt; 8</code>), and
<code>$? &amp; 127</code> gives which signal, if any, the process died from, and
<code>$? &amp; 128</code> reports whether there was a core dump.  (Mnemonic:
similar to <strong>sh</strong> and <strong>ksh</strong>.)
</para>
<para>
最後に close したパイプ、バッククォート (<code>``</code>) コマンド、
成功した wait() または waitpid() 呼び出し、system() 演算子が返したステータス。
このステータスワードは wait() システムコールが返した
16 ビットのステータス(またはそのように見えるもの)です。
従ってサブプロセスの exit 値は、実際には (<code>$? &gt;&gt; 8</code>)
で、<code>$? &amp; 127</code> は、もしあれば、そのプロセスを止めたシグナルで、
<code>$? &amp; 128</code> はコアダンプがあるかどうかを示します。
(記憶法: <strong>sh</strong> や <strong>ksh</strong> と同様。)
</para>
<para>
Additionally, if the <code>h_errno</code> variable is supported in C, its value
is returned via $? if any <code>gethost*()</code> function fails.
</para>
<para>
さらに、C で <code>h_errno</code> 変数に対応している場合は、
<code>gethost*()</code> が失敗したときに $? を通して返されます。
</para>
<para>
If you have installed a signal handler for <code>SIGCHLD</code>, the
value of <code>$?</code> will usually be wrong outside that handler.
</para>
<para>
<code>SIGCHLD</code> のシグナルハンドラを設定した場合、
<code>$?</code> の値は通常ハンドラの外側では正しくない値となります。
</para>
<para>
Inside an <code>END</code> subroutine <code>$?</code> contains the value that is going to be
given to <code>exit()</code>.  You can modify <code>$?</code> in an <code>END</code> subroutine to
change the exit status of your program.  For example:
</para>
<para>
<code>END</code> サブルーチンの内側では <code>$?</code> には <code>exit()</code> に渡されようとしている
値を含みます。
プログラムの終了ステータスを変更するために、<code>END</code> サブルーチン 内で
<code>$?</code> を変更できます。
例えば:
</para>
<verbatim><![CDATA[
END {
	$? = 1 if $? == 255;  # die would make it 255
}
]]></verbatim>
<para>
Under VMS, the pragma <code>use vmsish 'status'</code> makes <code>$?</code> reflect the
actual VMS exit status, instead of the default emulation of POSIX
status.
</para>
<para>
VMS では、<code>use vmsish 'status'</code> を指定すると、
<code>$?</code> はPOSIX ステータスをエミュレートしたものではなく、
実際の VMS 終了ステータスを反映します。
</para>
<para>
Also see <link xref='Error Indicators'>Error Indicators</link>.
</para>
<para>
<link xref='Error Indicators'>Error Indicators</link> も参照して下さい。
</para>
</item>
<item><itemtext>$OS_ERROR</itemtext>
</item>
<item><itemtext>$ERRNO</itemtext>
</item>
<item><itemtext>$!</itemtext>
<para>
If used numerically, yields the current value of the C <code>errno</code>
variable, with all the usual caveats.  (This means that you shouldn't
depend on the value of <code>$!</code> to be anything in particular unless
you've gotten a specific error return indicating a system error.)
If used an a string, yields the corresponding system error string.
You can assign a number to <code>$!</code> to set <emphasis>errno</emphasis> if, for instance,
you want <code>&quot;$!&quot;</code> to return the string for error <emphasis>n</emphasis>, or you want
to set the exit value for the die() operator.  (Mnemonic: What just
went bang?)
</para>
<para>
数値として使われると、その時点の C の <code>errno</code> 変数の値が
(通常の注意事項と共に) 得られます。
(これは、システムエラーを示す特定のエラーが得られた場合でもなければ、
<code>$!</code> の値が、特に何かを示すものであると、頼ってはならないということです。)
文字列として使われると、対応するシステムエラーのメッセージ文字列が得られます。
たとえば、<code>$!</code> にエラーの文字列を返して欲しいならば、あるいは、
die() 演算子の exit 値を設定するために、<emphasis>errno</emphasis> を設定するため 
<code>$!</code> へ代入を行なうことが可能です。
(記憶法: 何が bang(!) したか。)
</para>
<para>
Also see <link xref='Error Indicators'>Error Indicators</link>.
</para>
<para>
<link xref='Error Indicators'>Error Indicators</link> も参照して下さい。
</para>
</item>
<item><itemtext>$EXTENDED_OS_ERROR</itemtext>
</item>
<item><itemtext>$^E</itemtext>
<para>
Error information specific to the current operating system.  At
the moment, this differs from <code>$!</code> under only VMS, OS/2, and Win32
(and for MacPerl).  On all other platforms, <code>$^E</code> is always just
the same as <code>$!</code>.
</para>
<para>
現在のオペレーティングシステムに特化したエラー情報です。
現在のところ、VMS, OS/2, Win32 (と MacPerl) のみで
<code>$!</code> と異なる値をもちます。
その他のプラットフォームでは、<code>$^E</code> はいつも <code>$!</code> と同じです。
</para>
<para>
Under VMS, <code>$^E</code> provides the VMS status value from the last
system error.  This is more specific information about the last
system error than that provided by <code>$!</code>.  This is particularly
important when <code>$!</code> is set to <strong>EVMSERR</strong>.
</para>
<para>
VMS では、<code>$^E</code> は最後のシステムエラーの VMS ステータス値です。
これは、最後のシステムエラーについて <code>$!</code> で提供されるものより
具体的な情報を示します。
これは特に <code>$!</code> が <strong>EVMSERR</strong> にセットされた場合に重要です。
</para>
<para>
Under OS/2, <code>$^E</code> is set to the error code of the last call to
OS/2 API either via CRT, or directly from perl.
</para>
<para>
OS/2 では、<code>$^E</code> は CRT 経由、または Perl から直接呼び出された
最後の OS/2 API のエラーコードがセットされます。
</para>
<para>
Under Win32, <code>$^E</code> always returns the last error information
reported by the Win32 call <code>GetLastError()</code> which describes
the last error from within the Win32 API.  Most Win32-specific
code will report errors via <code>$^E</code>.  ANSI C and Unix-like calls
set <code>errno</code> and so most portable Perl code will report errors
via <code>$!</code>.
</para>
<para>
Win32 では、<code>$^E</code> は Win32 API での最後のエラーの内容を返す
<code>GetLastError()</code> Win32 呼び出しで報告される最新のエラー情報を
返します。
ほとんどの Win32 固有のコードはエラーを <code>$^E</code> 経由で返します。
ANSI C と Unix 風の呼び出しは <code>errno</code> をセットするので、
ほとんどの移植性のある Perl コードは <code>$!</code> 経由で
エラーを報告します。
</para>
<para>
Caveats mentioned in the description of <code>$!</code> generally apply to
<code>$^E</code>, also.  (Mnemonic: Extra error explanation.)
</para>
<para>
<code>$!</code> の説明で触れた問題点は一般的に <code>$^E</code> にも適用されます。
(記憶法: 追加の(Extra)エラーの説明。)
</para>
<para>
Also see <link xref='Error Indicators'>Error Indicators</link>.
</para>
<para>
<link xref='Error Indicators'>Error Indicators</link> も参照して下さい。
</para>
</item>
<item><itemtext>$EVAL_ERROR</itemtext>
</item>
<item><itemtext>$@</itemtext>
<para>
The Perl syntax error message from the last eval() operator.  If null, the
last eval() parsed and executed correctly (although the operations you
invoked may have failed in the normal fashion).  (Mnemonic: Where was
the syntax error &quot;at&quot;?)
</para>
<para>
最後の eval() 操作子による Perl の構文エラーメッセージです。
空文字列であれば、最後の eval() が正常に
解析され、実行されたことになります (が、実行した演算子が、
通常の意味で失敗しているかもしれません)。
(記憶法: どこで (&quot;at&quot; where) 構文エラーが起ったか。)
</para>
<para>
Warning messages are not collected in this variable.  You can,
however, set up a routine to process warnings by setting <code>$SIG{__WARN__}</code>
as described below.
</para>
<para>
警告メッセージはこの変数に入りません。
しかし、後述する <code>$SIG{__WARN__}</code> にセットすることで
警告を処理するルーチンを設定できます。
</para>
<para>
Also see <link xref='Error Indicators'>Error Indicators</link>.
</para>
<para>
<link xref='Error Indicators'>Error Indicators</link> も参照して下さい。
</para>
</item>
<item><itemtext>$PROCESS_ID</itemtext>
</item>
<item><itemtext>$PID</itemtext>
</item>
<item><itemtext>$$</itemtext>
<para>
The process number of the Perl running this script.  You should
consider this variable read-only, although it will be altered
across fork() calls.  (Mnemonic: same as shells.)
</para>
<para>
スクリプトを実行している Perl のプロセス番号です。
この変数は read-only と考えるべきですが、
fork() 呼び出しによって値は変わります。
(記憶法: シェルと同じ。)
</para>
</item>
<item><itemtext>$REAL_USER_ID</itemtext>
</item>
<item><itemtext>$UID</itemtext>
</item>
<item><itemtext>$&lt;</itemtext>
<para>
The real uid of this process.  (Mnemonic: it's the uid you came <emphasis>from</emphasis>,
if you're running setuid.)
</para>
<para>
本プロセスの実 uid を示します。
(記憶法: setuid で実行中であれば、そこ「から」来た uid です。)
</para>
</item>
<item><itemtext>$EFFECTIVE_USER_ID</itemtext>
</item>
<item><itemtext>$EUID</itemtext>
</item>
<item><itemtext>$&gt;</itemtext>
<para>
The effective uid of this process.  Example:
</para>
<para>
本プロセスの実効 uid を示します。
例:
</para>
<verbatim><![CDATA[
$< = $>;		# set real to effective uid
($<,$>) = ($>,$<);	# swap real and effective uid
]]></verbatim>
<para>
(Mnemonic: it's the uid you went <emphasis>to</emphasis>, if you're running setuid.)
<code>$&lt;</code> and <code>$&gt;</code> can be swapped only on machines
supporting setreuid().
</para>
<para>
(記憶法: setuid で実行中であれば、そこ「へ」行く uidです。)
<code>$&lt;</code> と <code>$&gt;</code> の交換は、setreuid() をサポートしている
マシンでのみ可能です。
</para>
</item>
<item><itemtext>$REAL_GROUP_ID</itemtext>
</item>
<item><itemtext>$GID</itemtext>
</item>
<item><itemtext>$(</itemtext>
<para>
The real gid of this process.  If you are on a machine that supports
membership in multiple groups simultaneously, gives a space separated
list of groups you are in.  The first number is the one returned by
getgid(), and the subsequent ones by getgroups(), one of which may be
the same as the first number.
</para>
<para>
本プロセスの実 gid を示します。　同時に複数のグループに
所属できるマシンでは、所属するグループをスペースで
区切ったリストが得られます。
最初の数値は、getgid() で返されるものです。
その後に getgroups() が返す値が続き、その中の 1 つは、
最初の値と同じかもしれません。
</para>
<para>
However, a value assigned to <code>$(</code> must be a single number used to
set the real gid.  So the value given by <code>$(</code> should <emphasis>not</emphasis> be assigned
back to <code>$(</code> without being forced numeric, such as by adding zero.
</para>
<para>
しかし、<code>$(</code> に代入された値は実際の gid に設定された値の
一つでなければなりません。
従って、 <code>$(</code> で与えられた値はゼロを足すことによって
数値化することなく <code>$(</code> に書き戻すべきではありません。
</para>
<para>
(Mnemonic: parentheses are used to <emphasis>group</emphasis> things.  The real gid is the
group you <emphasis>left</emphasis>, if you're running setgid.)
</para>
<para>
(記憶法: 括弧は、<emphasis>グループ化</emphasis>に使われます。
setgid で実行中であれば、実 gid は <emphasis>left</emphasis> した、
つまり離れたグループです。)
</para>
</item>
<item><itemtext>$EFFECTIVE_GROUP_ID</itemtext>
</item>
<item><itemtext>$EGID</itemtext>
</item>
<item><itemtext>$)</itemtext>
<para>
The effective gid of this process.  If you are on a machine that
supports membership in multiple groups simultaneously, gives a space
separated list of groups you are in.  The first number is the one
returned by getegid(), and the subsequent ones by getgroups(), one of
which may be the same as the first number.
</para>
<para>
本プロセスの実効 gid を示します。
同時に複数のグループに所属できるマシンでは、
所属するグループをスペースで区切ったリストが得られます。
最初の数値は、getegid() で返されるものです。
その後に getgroups()が返す値が続き、その中の 1 つは、
最初の値と同じかもしれません。
</para>
<para>
Similarly, a value assigned to <code>$)</code> must also be a space-separated
list of numbers.  The first number sets the effective gid, and
the rest (if any) are passed to setgroups().  To get the effect of an
empty list for setgroups(), just repeat the new effective gid; that is,
to force an effective gid of 5 and an effectively empty setgroups()
list, say <code> $) = &quot;5 5&quot; </code>.
</para>
<para>
同様に、<code>$)</code> へ代入する値はスペースで区切られた数値の
リストでなければなりません。
最初の数値は実効 gid を設定し、残りの数値は(もしあれば) setgroups() に
渡されます。
setgroups() に空リストを渡したい場合は、単に新しい実効 gid を
繰り返してください。
つまり、実効 gid を 5 にして、setgroups() に空リストを渡したい場合は、
<code> $) = &quot;5 5&quot; </code> としてください。
</para>
<para>
(Mnemonic: parentheses are used to <emphasis>group</emphasis> things.  The effective gid
is the group that's <emphasis>right</emphasis> for you, if you're running setgid.)
</para>
<para>
(記憶法: 括弧は、<emphasis>グループ化</emphasis>に使われます。
setgid で実行中であれば、実効 gid は right な、つまり正しいグループです。)
</para>
<para>
<code>$&lt;</code>, <code>$&gt;</code>, <code>$(</code> and <code>$)</code> can be set only on
machines that support the corresponding <emphasis>set[re][ug]id()</emphasis> routine.  <code>$(</code>
and <code>$)</code> can be swapped only on machines supporting setregid().
</para>
<para>
<code>$&lt;</code>, <code>$&gt;</code>, <code>$(</code>, <code>$)</code> は、実行するマシンで、
対応する <emphasis>set[re][ug]id()</emphasis> ルーティンがサポートされているときにのみ
設定可能です。
<code>$(</code> と <code>$)</code> の交換は、
setregid() がサポートされているマシンでのみ可能です。
</para>
</item>
<item><itemtext>$PROGRAM_NAME</itemtext>
</item>
<item><itemtext>$0</itemtext>
<para>
Contains the name of the program being executed.  On some operating
systems assigning to <code>$0</code> modifies the argument area that the <strong>ps</strong>
program sees.  This is more useful as a way of indicating the current
program state than it is for hiding the program you're running.
(Mnemonic: same as <strong>sh</strong> and <strong>ksh</strong>.)
</para>
<para>
実行されているプログラムの名前を示します。
<code>$0</code> に代入を行なうことで <strong>ps</strong>) プログラムが覗く、
引数エリアを修正できるシステムもあります。
実行しているプログラムを隠すよりは、
実行中のプログラムの状態を表示するときに、使うとよいでしょう。
(記憶法: <strong>sh</strong> や <strong>ksh</strong> と同じ。)
</para>
<para>
Note for BSD users: setting <code>$0</code> does not completely remove &quot;perl&quot;
from the ps(1) output.  For example, setting <code>$0</code> to <code>&quot;foobar&quot;</code> will
result in <code>&quot;perl: foobar (perl)&quot;</code>.  This is an operating system
feature.
</para>
<para>
BSD ユーザーへの注意: <code>$0</code> に値をセットしても、ps(1) の出力から
完全に &quot;perl&quot; の文字列は取り除かれません。
例えば、<code>$0</code> に <code>&quot;foobar&quot;</code> と設定すると、<code>&quot;perl: foobar (perl)&quot;</code> という
結果になります。これはオペレーティングシステムの機能です。
</para>
</item>
<item><itemtext>$[</itemtext>
<para>
The index of the first element in an array, and of the first character
in a substring.  Default is 0, but you could theoretically set it
to 1 to make Perl behave more like <strong>awk</strong> (or Fortran) when
subscripting and when evaluating the index() and substr() functions.
(Mnemonic: [ begins subscripts.)
</para>
<para>
配列の最初の要素や、文字列の最初の文字のインデックスを
示します。
デフォルトは 0 ですが、理論的には、index() 関数や
substr() 関数を評価するときに、Perl の動作をより <strong>awk</strong>
(や Fortran) に近づけるため、1 に設定することもできます。
(記憶法: [ は添え字付けの始め。)
</para>
<para>
As of release 5 of Perl, assignment to <code>$[</code> is treated as a compiler
directive, and cannot influence the behavior of any other file.
Its use is highly discouraged.
</para>
<para>
Perl 5 からは <code>$[</code> への代入は、コンパイラへのディレクティブとして扱われ、
他のファイルの動作に影響を与えることがなくなりました。
この変数はできるだけ使わないようにしてください。
</para>
</item>
<item><itemtext>$]</itemtext>
<para>
The version + patchlevel / 1000 of the Perl interpreter.  This variable
can be used to determine whether the Perl interpreter executing a
script is in the right range of versions.  (Mnemonic: Is this version
of perl in the right bracket?)  Example:
</para>
<para>
Perl インタプリタの version + patchlevel / 1000 が返されます。
スクリプトの最初で、そのスクリプトを実行しているインタプリタのバージョンが
適切な範囲内にあるかを調べる、といったことができます。
(記憶法: Perl のバージョンは、正しい範囲 (right
bracket) にあるか。)　例:
</para>
<verbatim><![CDATA[
warn "No checksumming!\n" if $] < 3.019;
]]></verbatim>
<para>
See also the documentation of <code>use VERSION</code> and <code>require VERSION</code>
for a convenient way to fail if the running Perl interpreter is too old.
</para>
<para>
実行する Perl インタプリタが古すぎる場合に終了する便利な方法に
ついては <code>use VERSION</code> と <code>require VERSION</code> のドキュメントも
参照して下さい。
</para>
<para>
The use of this variable is deprecated.  The floating point representation
can sometimes lead to inaccurate numeric comparisons.  See <code>$^V</code> for a
more modern representation of the Perl version that allows accurate string
comparisons.
</para>
<para>
この変数は使わないようにしてください。
浮動小数点表現は数値比較が不正確に成ることがあります。
文字列比較が使える新しい Perl バージョンの表現方法である <code>$^V</code> を
参照して下さい。
</para>
</item>
<item><itemtext>$COMPILING</itemtext>
</item>
<item><itemtext>$^C</itemtext>
<para>
The current value of the flag associated with the <strong>-c</strong> switch.
Mainly of use with <strong>-MO=...</strong> to allow code to alter its behavior
when being compiled, such as for example to AUTOLOAD at compile
time rather than normal, deferred loading.  See <link xref='perlcc'>perlcc</link>.  Setting
<code>$^C = 1</code> is similar to calling <code>B::minus_c</code>.
</para>
<para>
<strong>-c</strong> スイッチに関連付けられた現在の値です。
主に <strong>-MO=...</strong> と共に用いられ、例えば AUTOLOAD を通常の遅延ロードでは
なくコンパイル時に実行するといった、コンパイル時の振る舞いを
変えるために用います。<link xref='perlcc'>perlcc</link> を参照して下さい。
<code>$^C = 1</code> に設定することは <code>B::minus_c</code> を呼び出すのと似ています。
</para>
</item>
<item><itemtext>$DEBUGGING</itemtext>
</item>
<item><itemtext>$^D</itemtext>
<para>
The current value of the debugging flags.  (Mnemonic: value of <strong>-D</strong>
switch.)
</para>
<para>
デバッグフラグの現在の値を示します。
(記憶法: <strong>-D</strong> スイッチの値。)
</para>
</item>
<item><itemtext>$SYSTEM_FD_MAX</itemtext>
</item>
<item><itemtext>$^F</itemtext>
<para>
The maximum system file descriptor, ordinarily 2.  System file
descriptors are passed to exec()ed processes, while higher file
descriptors are not.  Also, during an open(), system file descriptors are
preserved even if the open() fails.  (Ordinary file descriptors are
closed before the open() is attempted.)  The close-on-exec
status of a file descriptor will be decided according to the value of
<code>$^F</code> when the corresponding file, pipe, or socket was opened, not the
time of the exec().
</para>
<para>
システムが使用するファイル記述子の最大値を示し、
通常は 2 です。
システムファイル記述子は、exec() されたプロセスに渡されますが、
それ以降のファイル記述子は渡されません。
また、open() の実行中は、システムファイル記述子は、
たとえ open() が失敗しても、保存されます。
(通常のファイル記述子は、open() が実行される前にクローズされます。)
ファイル記述子の close-on-exec のステータスは、exec() 時ではなく、
対応するファイル、パイプソケットの open 時の <code>$^F</code> の値によって
決められます。
</para>
</item>
<item><itemtext>$^H</itemtext>
<para>
WARNING: This variable is strictly for internal use only.  Its availability,
behavior, and contents are subject to change without notice.
</para>
<para>
警告: この変数は厳密に内部使用に限定されます。
その可用性、挙動、内容は告知なく変更される可能性があります。
</para>
<para>
This variable contains compile-time hints for the Perl interpreter.  At the
end of compilation of a BLOCK the value of this variable is restored to the
value when the interpreter started to compile the BLOCK.
</para>
<para>
この変数には Perl インタプリタのコンパイル時のヒントが入ります。
BLOCK のコンパイル終了時に、この変数の値は
インタプリタが BLOCK のコンパイルを開始した時の値に戻されます。
</para>
<para>
When perl begins to parse any block construct that provides a lexical scope
(e.g., eval body, required file, subroutine body, loop body, or conditional
block), the existing value of $^H is saved, but its value is left unchanged.
When the compilation of the block is completed, it regains the saved value.
Between the points where its value is saved and restored, code that
executes within BEGIN blocks is free to change the value of $^H.
</para>
<para>
Perl がレキシカルスコープを持つブロック構造(eval の中身、required された
ファイル、サブルーチンの中身、loop の中身、条件付きブロック)の
パーズを開始するとき、現在の $^H の値は保存されますが、
値は変更されません。
ブロックのコンパイルが終わると、保存された値が戻されます。
値の保存と回復の間の地点で、
BEGIN ブロックの中で実行されるコードは自由に
$^H の値を変更できます。
</para>
<para>
This behavior provides the semantic of lexical scoping, and is used in,
for instance, the <code>use strict</code> pragma.
</para>
<para>
この振る舞いはレキシカルスコープを持ち、その中で使えます。
例としては <code>use strict</code> があります。
</para>
<para>
The contents should be an integer; different bits of it are used for
different pragmatic flags.  Here's an example:
</para>
<para>
内容は整数であるべきです。
ビット毎に異なるプラグマフラグとして使われます。以下は例です:
</para>
<verbatim><![CDATA[
sub add_100 { $^H |= 0x100 }
]]></verbatim>
<verbatim><![CDATA[
sub foo {
	BEGIN { add_100() }
	bar->baz($boon);
}
]]></verbatim>
<para>
Consider what happens during execution of the BEGIN block.  At this point
the BEGIN block has already been compiled, but the body of foo() is still
being compiled.  The new value of $^H will therefore be visible only while
the body of foo() is being compiled.
</para>
<para>
BEGIN ブロックの実行中に起こることを考えてみます。
この時点で BEGIN ブロックは既にコンパイルされていますが、
foo() の中身はまだコンパイル中です。
従って $^H の新しい値は foo() の中身がコンパイル中にのみ
見ることが出来ます。
</para>
<para>
Substitution of the above BEGIN block with:
</para>
<para>
上記の BEGIN ブロックを以下のように変更すると:
</para>
<verbatim><![CDATA[
BEGIN { require strict; strict->import('vars') }
]]></verbatim>
<para>
demonstrates how <code>use strict 'vars'</code> is implemented.  Here's a conditional
version of the same lexical pragma:
</para>
<para>
どのように <code>use strict 'vars'</code> が実装されているかがわかります。
以下は同じレキシカルプラグマの条件付き版です:
</para>
<verbatim><![CDATA[
BEGIN { require strict; strict->import('vars') if $condition }
]]></verbatim>
</item>
<item><itemtext>%^H</itemtext>
<para>
WARNING: This variable is strictly for internal use only.  Its availability,
behavior, and contents are subject to change without notice.
</para>
<para>
警告: この変数は厳密に内部使用に限定されます。
その可用性、挙動、内容は告知なく変更される可能性があります。
</para>
<para>
The %^H hash provides the same scoping semantic as $^H.  This makes it
useful for implementation of lexically scoped pragmas.
</para>
<para>
%^H ハッシュは $^H と同じスコープを持ちます。
これはレキシカルスコープを持つプラグマを実装するのに便利です。
</para>
</item>
<item><itemtext>$INPLACE_EDIT</itemtext>
</item>
<item><itemtext>$^I</itemtext>
<para>
The current value of the inplace-edit extension.  Use <code>undef</code> to disable
inplace editing.  (Mnemonic: value of <strong>-i</strong> switch.)
</para>
<para>
置き換え編集の拡張子の値を示します。
置き換え編集を禁止するためには、<code>undef</code> を設定します。
(記憶法: <strong>-i</strong> スイッチの値。)
</para>
</item>
<item><itemtext>$^M</itemtext>
<para>
By default, running out of memory is an untrappable, fatal error.
However, if suitably built, Perl can use the contents of <code>$^M</code>
as an emergency memory pool after die()ing.  Suppose that your Perl
were compiled with -DPERL_EMERGENCY_SBRK and used Perl's malloc.
Then
</para>
<para>
デフォルトでは、メモリ不足はトラップできない致命的エラーとなります。
しかし、もし適切に構築されていれば、Perl は <code>$^M</code> の中身を
die() した後の緊急用メモリとして使えます。
Perl が -DPERL_EMERGENCY_SBRK 付きでコンパイルされ、
Perl の malloc を使うと仮定します。そして、
</para>
<verbatim><![CDATA[
$^M = 'a' x (1 << 16);
]]></verbatim>
<para>
would allocate a 64K buffer for use in an emergency.  See the
<filename>INSTALL</filename> file in the Perl distribution for information on how to
enable this option.  To discourage casual use of this advanced
feature, there is no <link xref='English'>English</link> long name for this variable.
</para>
<para>
とすると緊急用の 64K のバッファを割り当てます。
このオプションを有効にする方法についての情報は
Perl 配布パッケージに含まれている <filename>INSTALL</filename> ファイルを参照して下さい。
この拡張機能を気軽に使えないようにするために、
この変数には <link xref='English'>English</link> の長い名前はありません。
</para>
</item>
<item><itemtext>$OSNAME</itemtext>
</item>
<item><itemtext>$^O</itemtext>
<para>
The name of the operating system under which this copy of Perl was
built, as determined during the configuration process.  The value
is identical to <code>$Config{'osname'}</code>.  See also <link xref='Config'>Config</link> and the 
<strong>-V</strong> command-line switch documented in <link xref='perlrun'>perlrun</link>.
</para>
<para>
この Perl が構築されたオペレーティングシステムの名前です。
これは設定プロセス中に決定されます。
この値は <code>$Config{'osname'}</code> と同じです。
<link xref='Config'>Config</link> と、<link xref='perlrun'>perlrun</link> でドキュメント化されている
<strong>-V</strong> コマンドラインスイッチも参照して下さい。
</para>
</item>
<item><itemtext>$PERLDB</itemtext>
</item>
<item><itemtext>$^P</itemtext>
<para>
The internal variable for debugging support.  The meanings of the
various bits are subject to change, but currently indicate:
</para>
<para>
デバッグ機能のための内部変数です。
それぞれのビットの意味は変わるかもしれませんが、
現在のところは以下の通りです:
</para>
</item>
<list>
<item><itemtext>0x01</itemtext>
<para>
Debug subroutine enter/exit.
</para>
<para>
サブルーチンの出入りをデバッグします。
</para>
</item>
<item><itemtext>0x02</itemtext>
<para>
Line-by-line debugging.
</para>
<para>
行毎にデバッグします。
</para>
</item>
<item><itemtext>0x04</itemtext>
<para>
Switch off optimizations.
</para>
<para>
最適化を行いません。
</para>
</item>
<item><itemtext>0x08</itemtext>
<para>
Preserve more data for future interactive inspections.
</para>
<para>
将来の対話的な検査のためにより多くのデータを保存します。
</para>
</item>
<item><itemtext>0x10</itemtext>
<para>
Keep info about source lines on which a subroutine is defined.
</para>
<para>
サブルーチンが定義されたソース行に関する情報を保持します。
</para>
</item>
<item><itemtext>0x20</itemtext>
<para>
Start with single-step on.
</para>
<para>
シングルステップ実行で開始します。
</para>
</item>
<item><itemtext>0x40</itemtext>
<para>
Use subroutine address instead of name when reporting.
</para>
<para>
報告時にサブルーチン名でなくサブルーチンのアドレスを使います。
</para>
</item>
<item><itemtext>0x80</itemtext>
<para>
Report <code>goto &amp;subroutine</code> as well.
</para>
<para>
<code>goto &amp;subroutine</code> も同様に報告します。
</para>
</item>
<item><itemtext>0x100</itemtext>
<para>
Provide informative &quot;file&quot; names for evals based on the place they were compiled.
</para>
<para>
eval に対して、コンパイルされた位置を元にした「ファイル」名を提供します。
</para>
</item>
<item><itemtext>0x200</itemtext>
<para>
Provide informative names to anonymous subroutines based on the place they
were compiled.
</para>
<para>
無名サブルーチンに対して、
コンパイルされた位置を基にした参考名を提供します。
</para>
</item>
</list>
<para>
Some bits may be relevant at compile-time only, some at
run-time only.  This is a new mechanism and the details may change.
</para>
<para>
コンパイル時にのみ有効なビットもあり、実行時にのみ有効なビットもあります。
これは新しいメカニズムであり、詳細は変わるかもしれません。
</para>
<item><itemtext>$LAST_REGEXP_CODE_RESULT</itemtext>
</item>
<item><itemtext>$^R</itemtext>
<para>
The result of evaluation of the last successful <code>(?{ code })</code>
regular expression assertion (see <link xref='perlre'>perlre</link>).  May be written to.
</para>
<para>
最後に成功した <code>(?{ code })</code> 正規表現アサートの評価の結果です
(<link xref='perlre'>perlre</link> を参照して下さい)。おそらくもっと書き足します。
</para>
</item>
<item><itemtext>$EXCEPTIONS_BEING_CAUGHT</itemtext>
</item>
<item><itemtext>$^S</itemtext>
<para>
Current state of the interpreter.  Undefined if parsing of the current
module/eval is not finished (may happen in $SIG{__DIE__} and
$SIG{__WARN__} handlers).  True if inside an eval(), otherwise false.
</para>
<para>
現在のインタプリタの状態を示します。
現在のモジュール/eval のパーズが終了していない場合は
未定義です(これは $SIG{__DIE__} と $SIG{__WARN__} のハンドラで
起こり得ます)。
eval() の内部では真、それ以外では偽となります。
</para>
</item>
<item><itemtext>$BASETIME</itemtext>
</item>
<item><itemtext>$^T</itemtext>
<para>
The time at which the program began running, in seconds since the
epoch (beginning of 1970).  The values returned by the <strong>-M</strong>, <strong>-A</strong>,
and <strong>-C</strong> filetests are based on this value.
</para>
<para>
プログラムを実行開始した時刻を、紀元 (1970年の始め) からの秒数で示したものです。
ファイルテスト <strong>-M</strong>、<strong>-A</strong>、<strong>-C</strong> で返される値は、この値に基づいています。
</para>
</item>
<item><itemtext>$PERL_VERSION</itemtext>
</item>
<item><itemtext>$^V</itemtext>
<para>
The revision, version, and subversion of the Perl interpreter, represented
as a string composed of characters with those ordinals.  Thus in Perl v5.6.0
it equals <code>chr(5) . chr(6) . chr(0)</code> and will return true for
<code>$^V eq v5.6.0</code>.  Note that the characters in this string value can
potentially be in Unicode range.
</para>
<para>
Perl インタプリタの revision, version, subversion を
それぞれの序数の文字からなる文字列で表現します。
つまり Perl v5.6.0 では <code>chr(5) . chr(6) . chr(0)</code> となり、
<code>$^V eq v5.6.0</code> は真を返します。
この文字列の文字は Unicode の範囲に入るかもしれないことに注意してください。
</para>
<para>
This can be used to determine whether the Perl interpreter executing a
script is in the right range of versions.  (Mnemonic: use ^V for Version
Control.)  Example:
</para>
<para>
これはスクリプトを実行している Perl インタプリタのバージョンが
正しい範囲に入っているかを調べるのに使えます。(記憶法:
^V をバージョンコントロールに使います。) 例:
</para>
<verbatim><![CDATA[
warn "No \"our\" declarations!\n" if $^V and $^V lt v5.6.0;
]]></verbatim>
<para>
See the documentation of <code>use VERSION</code> and <code>require VERSION</code>
for a convenient way to fail if the running Perl interpreter is too old.
</para>
<para>
実行する Perl インタプリタが古すぎる場合に終了する便利な方法に
ついては <code>use VERSION</code> と <code>require VERSION</code> のドキュメントを
参照して下さい。
</para>
<para>
See also <code>$]</code> for an older representation of the Perl version.
</para>
<para>
Perl バージョンの古い表現については <code>$]</code> も参照して下さい。
</para>
</item>
<item><itemtext>$WARNING</itemtext>
</item>
<item><itemtext>$^W</itemtext>
<para>
The current value of the warning switch, initially true if <strong>-w</strong>
was used, false otherwise, but directly modifiable.  (Mnemonic:
related to the <strong>-w</strong> switch.)  See also <link xref='warnings'>warnings</link>.
</para>
<para>
警告スイッチの値で、<strong>-w</strong> スイッチが使われると内部的に真となり、
そうでない場合は直接変更可能です。
(記憶法: <strong>-w</strong> スイッチに関係します。)
<link xref='warnings'>warnings</link> も参照して下さい。
</para>
</item>
<item><itemtext>${^WARNING_BITS}</itemtext>
<para>
The current set of warning checks enabled by the <code>use warnings</code> pragma.
See the documentation of <code>warnings</code> for more details.
</para>
<para>
<code>use warnings</code> プラグマで有効にされた、現在の警告チェックの集合です。
詳細については <code>warnings</code> のドキュメントを参照して下さい。
</para>
</item>
<item><itemtext>${^WIDE_SYSTEM_CALLS}</itemtext>
<para>
Global flag that enables system calls made by Perl to use wide character
APIs native to the system, if available.  This is currently only implemented
on the Windows platform.
</para>
<para>
Perl によるシステムコールで、システムにネイティブなワイド文字 API を
(もし使えるなら)使うようにするグローバルフラグです。
これは現在 Windows プラットフォームでのみ実装されています。
</para>
<para>
This can also be enabled from the command line using the <code>-C</code> switch.
</para>
<para>
これはコマンドラインで <code>-C</code> スイッチを使うことでも有効になります。
</para>
<para>
The initial value is typically <code>0</code> for compatibility with Perl versions
earlier than 5.6, but may be automatically set to <code>1</code> by Perl if the system
provides a user-settable default (e.g., <code>$ENV{LC_CTYPE}</code>).
</para>
<para>
初期値は典型的には <code>0</code> で、これは Perl バージョン 5.6 以前との
互換性のためです。
しかし、システムがユーザー定義可能なデフォルト(<code>$ENV{LC_CTYPE}</code> など)を
提供している場合は、Perl によって自動的に <code>1</code> にセットされることもあります。
</para>
<para>
The <code>bytes</code> pragma always overrides the effect of this flag in the current
lexical scope.  See <link xref='bytes'>bytes</link>.
</para>
<para>
<code>bytes</code> プラグマは常に現在のレキシカルスコープでの
このフラグの効果を上書きします。<link xref='bytes'>bytes</link> を参照して下さい。
</para>
</item>
<item><itemtext>$EXECUTABLE_NAME</itemtext>
</item>
<item><itemtext>$^X</itemtext>
<para>
The name that the Perl binary itself was executed as, from C's <code>argv[0]</code>.
This may not be a full pathname, nor even necessarily in your path.
</para>
<para>
Perl バイナリ自身が実行された時の名前を C の argv[0] から持ってきたものです。
フルパスではないかもしれませんし、検索パスにないかもしれません。
</para>
</item>
<item><itemtext>$ARGV</itemtext>
<para>
contains the name of the current file when reading from &lt;&gt;.
</para>
<para>
&lt;&gt; から読込みを行なっているとき、その時点のファイル名を示します。
</para>
</item>
<item><itemtext>@ARGV</itemtext>
<para>
The array @ARGV contains the command-line arguments intended for
the script.  <code>$#ARGV</code> is generally the number of arguments minus
one, because <code>$ARGV[0]</code> is the first argument, <emphasis>not</emphasis> the program's
command name itself.  See <code>$0</code> for the command name.
</para>
<para>
配列 @ARGV は、コマンドラインからスクリプトに渡す引数が入れられます。
<code>$ARGV[0]</code> が<emphasis>プログラムのコマンド名自身ではなく</emphasis>、
最初の引数ですから、<code>$#ARGV</code> は一般には、引数の個数 - 1 となります。
コマンド名については、<code>$0</code> を参照してください。
</para>
</item>
<item><itemtext>@INC</itemtext>
<para>
The array @INC contains the list of places that the <code>do EXPR</code>,
<code>require</code>, or <code>use</code> constructs look for their library files.  It
initially consists of the arguments to any <strong>-I</strong> command-line
switches, followed by the default Perl library, probably
<filename>/usr/local/lib/perl</filename>, followed by &quot;.&quot;, to represent the current
directory.  If you need to modify this at runtime, you should use
the <code>use lib</code> pragma to get the machine-dependent library properly
loaded also:
</para>
<para>
配列 @INC には、do EXPR、require、use によってライブラリファイルを
探すときに評価する場所のリストが納められています。
初期状態では、コマンドラインスイッチ <strong>-I</strong> の引数と
デフォルトの Perl ライブラリディレクトリ (おそらく
<filename>/usr/local/lib/perl5</filename>) とカレントディレクトリを表わす
&quot;.&quot; を順につなげたものです。
実行時にこれを変更する必要がある場合は、
マシン依存のライブラリを正しく読み込むために <code>use lib</code> も使うべきです:
</para>
<verbatim><![CDATA[
use lib '/mypath/libdir/';
use SomeMod;
]]></verbatim>
</item>
<item><itemtext>@_</itemtext>
<para>
Within a subroutine the array @_ contains the parameters passed to that
subroutine.  See <link xref='perlsub'>perlsub</link>.
</para>
<para>
サブルーチンの内部では、配列 @_ はサブルーチンに渡されたパラメータです。
<link xref='perlsub'>perlsub</link> を参照して下さい。
</para>
</item>
<item><itemtext>%INC</itemtext>
<para>
The hash %INC contains entries for each filename included via the
<code>do</code>, <code>require</code>, or <code>use</code> operators.  The key is the filename
you specified (with module names converted to pathnames), and the
value is the location of the file found.  The <code>require</code>
operator uses this hash to determine whether a particular file has
already been included.
</para>
<para>
ハッシュ %INC は、<code>do</code>, <code>require</code>, <code>use</code>演算子によって
インクルードされた、個々のファイル名をエントリとして持っています。
key は指定したファイル名(モジュール名はパス名に変換されます)で、
value は見つかった場所となっています。
<code>require</code> 演算子は、指定されたファイル名が既に
インクルードされているかを、このハッシュを使って調べます。
</para>
</item>
<item><itemtext>%ENV</itemtext>
</item>
<item><itemtext>$ENV{expr}</itemtext>
<para>
The hash %ENV contains your current environment.  Setting a
value in <code>ENV</code> changes the environment for any child processes
you subsequently fork() off.
</para>
<para>
ハッシュ %ENV には、その時点の環境変数が設定されています。
<code>ENV</code> に値を設定することで、
以後に fork() した子プロセスの環境変数を変更します。
</para>
</item>
<item><itemtext>%SIG</itemtext>
</item>
<item><itemtext>$SIG{expr}</itemtext>
<para>
The hash %SIG contains signal handlers for signals.  For example:
</para>
<para>
ハッシュ %SIG にはシグナルのためのシグナルハンドラが含まれています。例:
</para>
<verbatim><![CDATA[
sub handler {	# 1st argument is signal name
	my($sig) = @_;
	print "Caught a SIG$sig--shutting down\n";
	close(LOG);
	exit(0);
}
]]></verbatim>
<verbatim><![CDATA[
$SIG{'INT'}  = \&handler;
$SIG{'QUIT'} = \&handler;
...
$SIG{'INT'}  = 'DEFAULT';	# restore default action
$SIG{'QUIT'} = 'IGNORE';	# ignore SIGQUIT
]]></verbatim>
<para>
Using a value of <code>'IGNORE'</code> usually has the effect of ignoring the
signal, except for the <code>CHLD</code> signal.  See <link xref='perlipc'>perlipc</link> for more about
this special case.
</para>
<para>
<code>'IGNORE'</code> という値は通常はシグナルの効果を無視するために使いますが、
<code>CHLD</code> シグナルは例外です。
この特別な場合に関する詳細は <link xref='perlipc'>perlipc</link> を参照して下さい。
</para>
<para>
Here are some other examples:
</para>
<verbatim><![CDATA[
$SIG{"PIPE"} = "Plumber";   # assumes main::Plumber (not recommended)
$SIG{"PIPE"} = \&Plumber;   # just fine; assume current Plumber
$SIG{"PIPE"} = *Plumber;    # somewhat esoteric
$SIG{"PIPE"} = Plumber();   # oops, what did Plumber() return??
]]></verbatim>
<para>
以下にその他の例を示します:
</para>
<verbatim><![CDATA[
$SIG{"PIPE"} = "Plumber";   # main::Plumber を仮定します(非推奨)
$SIG{"PIPE"} = \&Plumber;   # 問題なし; カレントの Plumber を仮定します
$SIG{"PIPE"} = *Plumber;    # 少々難解
$SIG{"PIPE"} = Plumber();   # げげ、Plumber() は何を返すの??
]]></verbatim>
<para>
Be sure not to use a bareword as the name of a signal handler,
lest you inadvertently call it.
</para>
<para>
裸の単語をシグナルハンドラの名前として使わないようにしてください。
不注意で呼び出すのを避けるためです。
</para>
<para>
If your system has the sigaction() function then signal handlers are
installed using it.  This means you get reliable signal handling.  If
your system has the SA_RESTART flag it is used when signals handlers are
installed.  This means that system calls for which restarting is supported
continue rather than returning when a signal arrives.  If you want your
system calls to be interrupted by signal delivery then do something like
this:
</para>
<para>
システムに sigaction() 関数がある場合は、
シグナルハンドラはこの関数を使って設定されます。
これにより、信頼性のあるシグナルハンドリングが可能になります。
システムに SA_RESTART フラグがある場合は、
シグナルハンドラはこれを使います。
これによりこれにより再開に対応しているシステムコールは
シグナルが到着したときに返らずに再開します。
シグナルが届いたときにシステムコールを中断したい場合は
以下のようにしてください:
</para>
<verbatim><![CDATA[
use POSIX ':signal_h';
]]></verbatim>
<verbatim><![CDATA[
my $alarm = 0;
sigaction SIGALRM, new POSIX::SigAction sub { $alarm = 1 }
	or die "Error setting SIGALRM handler: $!\n";
]]></verbatim>
<para>
See <link xref='POSIX'>POSIX</link>.
</para>
<para>
<link xref='POSIX'>POSIX</link> を参照して下さい。
</para>
<para>
Certain internal hooks can be also set using the %SIG hash.  The
routine indicated by <code>$SIG{__WARN__}</code> is called when a warning message is
about to be printed.  The warning message is passed as the first
argument.  The presence of a __WARN__ hook causes the ordinary printing
of warnings to STDERR to be suppressed.  You can use this to save warnings
in a variable, or turn warnings into fatal errors, like this:
</para>
<para>
ある種の内部フックも %SIG ハッシュを使ってセットされます。
警告メッセージを表示しようとするときに <code>$SIG{__WARN__}</code> で
示されたルーチンが呼び出されます。
警告メッセージは最初の引数として渡されます。
__WARN__ フックがあると、通常の STDERR への警告の出力は行われません。
これを使って、警告メッセージを変数にいれたり、
あるいは以下のようにして警告を致命的エラーに変えたり出来ます:
</para>
<verbatim><![CDATA[
local $SIG{__WARN__} = sub { die $_[0] };
eval $proggie;
]]></verbatim>
<para>
The routine indicated by <code>$SIG{__DIE__}</code> is called when a fatal exception
is about to be thrown.  The error message is passed as the first
argument.  When a __DIE__ hook routine returns, the exception
processing continues as it would have in the absence of the hook,
unless the hook routine itself exits via a <code>goto</code>, a loop exit, or a die().
The <code>__DIE__</code> handler is explicitly disabled during the call, so that you
can die from a <code>__DIE__</code> handler.  Similarly for <code>__WARN__</code>.
</para>
<para>
<code>$SIG{__DIE__}</code> で示されるルーチンは
致命的な例外がまさに投げられようとするときに呼び出されます。
エラーメッセージは最初の引数として渡されます。
__DIE__ フックから戻ると、
例外処理はフックがなかったかのように再開されますが、
フックルーチン自体が <code>goto</code>、ループ終了、die() によって
終了した場合を除きます。
<code>__DIE__</code> ハンドラは呼び出し中は明示的に無効になりますので、
<code>__DIE__</code> ハンドラから die できます。
<code>__WARN__</code> も同様です。
</para>
<para>
Due to an implementation glitch, the <code>$SIG{__DIE__}</code> hook is called
even inside an eval().  Do not use this to rewrite a pending exception
in <code>$@</code>, or as a bizarre substitute for overriding CORE::GLOBAL::die().
This strange action at a distance may be fixed in a future release
so that <code>$SIG{__DIE__}</code> is only called if your program is about
to exit, as was the original intent.  Any other use is deprecated.
</para>
<para>
実装上の不具合により、<code>$SIG{__DIE__}</code> は eval() の中でも
呼び出されます。これを、<code>$@</code> の待っている例外を書き換えたり、
CORE::GLOBAL::die() を上書きするのに使わないでください。
この奇妙な行動は将来のリリースで修正される予定なので、
<code>$SIG{__DIE__}</code> は当初の目的通り、
プログラムが終了するときにのみ呼び出されるようになります。
その他の用途は非推奨です。
</para>
<para>
<code>__DIE__</code>/<code>__WARN__</code> handlers are very special in one respect:
they may be called to report (probable) errors found by the parser.
In such a case the parser may be in inconsistent state, so any
attempt to evaluate Perl code from such a handler will probably
result in a segfault.  This means that warnings or errors that
result from parsing Perl should be used with extreme caution, like
this:
</para>
<para>
<code>__DIE__</code> と <code>__WARN__</code> のハンドラは一つの点で非常に特別です。
パーザによってエラー(であろうもの)を報告するために呼び出されることがある
ことです。
このような場合、パーザは不安定な状態になっているかもしれないので、
ハンドラから Perl コードを評価しようとするとセグメンテーションフォールトが
発生するかもしれません。
Perl のパーズ中の警告やエラーは、以下のように非常に注意して扱うべきです。
</para>
<verbatim><![CDATA[
require Carp if defined $^S;
Carp::confess("Something wrong") if defined &Carp::confess;
die "Something wrong, but could not load Carp to give backtrace...
     To see backtrace try starting Perl with -MCarp switch";
]]></verbatim>
<para>
Here the first line will load Carp <emphasis>unless</emphasis> it is the parser who
called the handler.  The second line will print backtrace and die if
Carp was available.  The third line will be executed only if Carp was
not available.
</para>
<para>
一行目は、<emphasis>パーザがハンドラを呼び出したのでなければ</emphasis>
Carp を読み込みます。
二行目は、Carp が使えるならバックとレースを表示して die します。
三行目は Carp が使えないときにのみ実行されます。
</para>
<para>
See <link xref='perlfunc#die'>perlfunc/die</link>, <link xref='perlfunc#warn'>perlfunc/warn</link>, <link xref='perlfunc#eval'>perlfunc/eval</link>, and
<link xref='warnings'>warnings</link> for additional information.
</para>
<para>
追加の情報については <link xref='perlfunc#die'>perlfunc/die</link>, <link xref='perlfunc#warn'>perlfunc/warn</link>, <link xref='perlfunc#eval'>perlfunc/eval</link>,
<link xref='warnings'>warnings</link> を参照して下さい。
</para>
</item>
</list>
</sect2>
<sect2>
<title>Error Indicators</title>
<para>
(エラー指示子)
</para>
<para>
The variables <code>$@</code>, <code>$!</code>, <code>$^E</code>, and <code>$?</code> contain information
about different types of error conditions that may appear during
execution of a Perl program.  The variables are shown ordered by
the &quot;distance&quot; between the subsystem which reported the error and
the Perl process.  They correspond to errors detected by the Perl
interpreter, C library, operating system, or an external program,
respectively.
</para>
<para>
変数 <code>$@</code>, <code>$!</code>, <code>$^E</code>, <code>$?</code> は Perl プログラムの実行中に
発生した、異なる種類のエラー情報を保持します。
変数はエラーを報告した副システムと Perl プロセスとの「距離」
の順番に並んでいます。
これらはそれぞれ、Perl インタプリタ、C ライブラリ、
オペレーティングシステム、外部プログラムによって検出された
エラーに対応しています。
</para>
<para>
To illustrate the differences between these variables, consider the 
following Perl expression, which uses a single-quoted string:
</para>
<para>
これらの変数の違いを示すために、
以下のようなシングルクォートを用いた Perl 式を考えます:
</para>
<verbatim><![CDATA[
eval q{
	open PIPE, "/cdrom/install |";
	@res = <PIPE>;
	close PIPE or die "bad pipe: $?, $!";
};
]]></verbatim>
<para>
After execution of this statement all 4 variables may have been set.
</para>
<para>
この文を実行した後、4 つの変数全てがセットされる可能性があります。
</para>
<para>
<code>$@</code> is set if the string to be <code>eval</code>-ed did not compile (this
may happen if <code>open</code> or <code>close</code> were imported with bad prototypes),
or if Perl code executed during evaluation die()d .  In these cases
the value of $@ is the compile error, or the argument to <code>die</code>
(which will interpolate <code>$!</code> and <code>$?</code>!).  (See also <link xref='Fatal'>Fatal</link>,
though.)
</para>
<para>
<code>$@</code> は <code>eval</code> された文字列がコンパイルされなかったとき
(これは <code>open</code> か <code>close</code> が正しくない
プロトタイプでインポートされたときに起こり得ます)、
または評価中に実行している Perl コードが die() したときにセットされます。
これらの場合には $@ の値はコンパイルエラー、または
<code>die</code> への引数(これには <code>$!</code> と <code>$?</code> が差し挟まれます!)です。
(しかし、<link xref='Fatal'>Fatal</link> も参照して下さい。)
</para>
<para>
When the eval() expression above is executed, open(), <code>&lt;PIPE&gt;</code>,
and <code>close</code> are translated to calls in the C run-time library and
thence to the operating system kernel.  <code>$!</code> is set to the C library's
<code>errno</code> if one of these calls fails.
</para>
<para>
上記の eval() 式が実行された後、
open(), <code>&lt;PIPE&gt;</code>, <code>close</code> は C ランタイムライブラリの呼び出しに
変換され、それからオペレーティングシステムコールに変換されます。
<code>$!</code> はこれらの呼び出しのどれかが失敗したとき、
C ライブラリの <code>errno</code> の値がセットされます。
</para>
<para>
Under a few operating systems, <code>$^E</code> may contain a more verbose
error indicator, such as in this case, &quot;CDROM tray not closed.&quot;
Systems that do not support extended error messages leave <code>$^E</code>
the same as <code>$!</code>.
</para>
<para>
いくつかのオペレーティングシステムでは、
<code>$^E</code> により詳細なエラー指示子が入っているかもしれません。
今回の場合で言えば、&quot;CDROM tray not closed.&quot; などです。
追加のエラーメッセージに対応していないシステムでは、
<code>$^E</code> は <code>$!</code> と同じ値です。
</para>
<para>
Finally, <code>$?</code> may be set to non-0 value if the external program
<filename>/cdrom/install</filename> fails.  The upper eight bits reflect specific
error conditions encountered by the program (the program's exit()
value).   The lower eight bits reflect mode of failure, like signal
death and core dump information  See wait(2) for details.  In
contrast to <code>$!</code> and <code>$^E</code>, which are set only if error condition
is detected, the variable <code>$?</code> is set on each <code>wait</code> or pipe
<code>close</code>, overwriting the old value.  This is more like <code>$@</code>, which
on every eval() is always set on failure and cleared on success.
</para>
<para>
最後に、<code>$?</code> は外部プログラム <filename>/cdrom/install</filename> が失敗したときに
非 0 にセットされるかもしれません。
上位の 8 ビットはプログラムが遭遇した特定のエラー状況
(プログラムの exit() の値)を反映します。
下位の 8 ビットは、シグナルの死亡やコアダンプ情報と言った失敗のモードを反映します。
詳細については wait(2) を参照して下さい。
<code>$!</code> と <code>$^E</code> はエラー状況が検出されたときにのみ設定されますが、
変数 <code>$?</code> は <code>wait</code> やパイプの <code>close</code> の度に、前の値を上書きします。
これは、<code>$@</code> が eval() の実行毎に、エラーならセットされ、
成功ならクリアされるという動作と似ています。
</para>
<para>
For more details, see the individual descriptions at <code>$@</code>, <code>$!</code>, <code>$^E</code>,
and <code>$?</code>.
</para>
<para>
より詳細については、<code>$@</code>, <code>$!</code>, <code>$^E</code>, <code>$?</code> それぞれの説明を
参照して下さい。
</para>
</sect2>
<sect2>
<title>Technical Note on the Syntax of Variable Names</title>
<para>
(変数名の文法に関するテクニカルノート)
</para>
<para>
Variable names in Perl can have several formats.  Usually, they
must begin with a letter or underscore, in which case they can be
arbitrarily long (up to an internal limit of 251 characters) and
may contain letters, digits, underscores, or the special sequence
<code>::</code> or <code>'</code>.  In this case, the part before the last <code>::</code> or
<code>'</code> is taken to be a <emphasis>package qualifier</emphasis>; see <link xref='perlmod'>perlmod</link>.
</para>
<para>
Perl の変数名は様々な形があります。
通常、変数名は英文字か下線で始まらなければならず、
任意の長さ(内部制限の 251 文字まで)を取ることができ、
英文字、数字、下線、特別な文字列である <code>::</code> と <code>'</code> を含むことができます。
この場合、最後の <code>::</code> または <code>'</code> の前は
<emphasis>パッケージ限定子</emphasis> として扱われます。
<link xref='perlmod'>perlmod</link> を参照して下さい。
</para>
<para>
Perl variable names may also be a sequence of digits or a single
punctuation or control character.  These names are all reserved for
special uses by Perl; for example, the all-digits names are used
to hold data captured by backreferences after a regular expression
match.  Perl has a special syntax for the single-control-character
names: It understands <code>^X</code> (caret <code>X</code>) to mean the control-<code>X</code>
character.  For example, the notation <code>$^W</code> (dollar-sign caret
<code>W</code>) is the scalar variable whose name is the single character
control-<code>W</code>.  This is better than typing a literal control-<code>W</code>
into your program.
</para>
<para>
Perl の変数は、数字の列または一文字の句読点かコントロール文字の
場合もあります。
これらの名前は全て Perl によって特別な用途のために予約されています。
例えば、全て数字の名前は正規表現マッチの後の後方参照のデータを
保持するために用いられます。
Perl には一文字のコントロール文字の名前のための特別な文法があります。
<code>^X</code>(キャレット <code>X</code>)は control-<code>X</code> キャラクタを意味します。
例えば、<code>$^W</code>(ドル記号 キャレット <code>W</code>)は control-<code>W</code> 一文字の
名前をもつスカラ変数です。
これはプログラム中にリテラルな control-<code>W</code> をタイプするより
良いです。
</para>
<para>
Finally, new in Perl 5.6, Perl variable names may be alphanumeric
strings that begin with control characters (or better yet, a caret).
These variables must be written in the form <code>${^Foo}</code>; the braces
are not optional.  <code>${^Foo}</code> denotes the scalar variable whose
name is a control-<code>F</code> followed by two <code>o</code>'s.  These variables are
reserved for future special uses by Perl, except for the ones that
begin with <code>^_</code> (control-underscore or caret-underscore).  No
control-character name that begins with <code>^_</code> will acquire a special
meaning in any future version of Perl; such names may therefore be
used safely in programs.  <code>$^_</code> itself, however, <emphasis>is</emphasis> reserved.
</para>
<para>
最後に、Perl 5.6 の新機能として、コントロール文字(もっと言えばキャレット)で
始まる、英数字からなる文字列の変数名も使えます。
これらの変数は <code>${^Foo}</code> の形で書かれなければなりません。
括弧は必須です。
<code>${^Foo}</code> はコントロール-<code>F</code> の後に二つ <code>o</code> が続く名前を持つ
スカラ変数です。
これらの変数は Perl によって特別な用途のために予約されていますが、
<code>^_</code> (コントロール-下線またはキャレット-下線)で始まるものは例外です。
<code>^_</code> で始まるコントロール文字名は Perl の将来のバージョンで
特別な意味を持つことはありません。
従ってこれらの名前はプログラム中で安全に使用できます。
但し、<code>$^_</code> そのものは <emphasis>予約されます</emphasis>。
</para>
<para>
Perl identifiers that begin with digits, control characters, or
punctuation characters are exempt from the effects of the <code>package</code>
declaration and are always forced to be in package <code>main</code>.  A few
other names are also exempt:
</para>
<para>
数字、コントロール文字、句読点で始まる Perl の識別子は
<code>package</code> 宣言の効果から逃れて、常に <code>main</code> パッケージにあるものとして
扱われます。さらに以下のものも逃れます:
</para>
<verbatim><![CDATA[
ENV		STDIN
INC		STDOUT
ARGV		STDERR
ARGVOUT
SIG
]]></verbatim>
<para>
In particular, the new special <code>${^_XYZ}</code> variables are always taken
to be in package <code>main</code>, regardless of any <code>package</code> declarations
presently in scope.
</para>
<para>
特に、新しい特別な <code>${^_XYZ}</code> 変数はスコープ内の <code>package</code> 宣言に関わらず
常に <code>main</code> パッケージとして扱われます。
</para>
</sect2>
</sect1>
<sect1>
<title>BUGS</title>
<para>
(バグ)
</para>
<para>
Due to an unfortunate accident of Perl's implementation, <code>use
English</code> imposes a considerable performance penalty on all regular
expression matches in a program, regardless of whether they occur
in the scope of <code>use English</code>.  For that reason, saying <code>use
English</code> in libraries is strongly discouraged.  See the
Devel::SawAmpersand module documentation from CPAN
(<xlink uri='http://www.perl.com/CPAN/modules/by-module/Devel/'>http://www.perl.com/CPAN/modules/by-module/Devel/</xlink>)
for more information.
</para>
<para>
Perl の実装における不幸な事故により、
<code>use English</code> はプログラム中の全ての正規表現マッチングにおいて
かなりの性能低下を引き起こします。
これは <code>use English</code> のスコープ内かどうかに関わりません。
この理由により、ライブラリで <code>use English</code> を使うのは
できるだけ避けてください。
さらなる情報については CPAN の Devel::SawAmpersand モジュール
(<xlink uri='http://www.perl.com/CPAN/modules/by-module/Devel/'>http://www.perl.com/CPAN/modules/by-module/Devel/</xlink>) の
ドキュメントを参照して下さい。
</para>
<para>
Having to even think about the <code>$^S</code> variable in your exception
handlers is simply wrong.  <code>$SIG{__DIE__}</code> as currently implemented
invites grievous and difficult to track down errors.  Avoid it
and use an <code>END{}</code> or CORE::GLOBAL::die override instead.
</para>
<para>
例外ハンドラの中で <code>$^S</code> を使おうなどとは考えてもいけません。
現在の実装の <code>$SIG{__DIE__}</code> は面倒を引き寄せ、エラーの追跡を困難にします。
これの代わりに <code>END{}</code> を使うか、CORE::GLOBAL::die をオーバーライドしてください。
</para>
<para>
Translate: 吉村 寿人 &lt;JAE00534@niftyserve.or.jp&gt; (5.000)
Update: Kentaro Shirakata &lt;argrath@ub32.org&gt; (5.6.1-)
License: GPL or Artistic
</para>
</sect1>
</pod>
