一部の特殊変数は Perl 言語で定義されており、通常は $、@、または % の接頭辞が付けられます (例: $_)。
多くの特殊変数には長い英語名が付いており、オペレーティング システム変数は $OS_ERROR と書くことができます。
英語名の特殊変数を使用したい場合は、プログラムの先頭にuse English;を追加する必要があります。これにより、説明的な英語の特殊変数を使用できるようになります。
最も一般的に使用される特殊変数は $_ で、これにはデフォルトの入力およびパターン マッチングのコンテンツが含まれます。例は次のとおりです。
上記のプログラムを実行すると、出力結果は次のようになります。
Googleコーデックとタオバオ
次の例では、コンテンツの出力に $_ を使用しません。
上記のプログラムを実行すると、出力結果は次のようになります。
Googleコーデックとタオバオ
この例では、最初に「Google」が出力され、次に「Codercto」が出力され、最後に「Taobao」が出力されます。
反復ループでは、現在のループの文字列が $_ に配置され、print を通じて出力されます。さらに、print は出力変数を指定せず、デフォルトで $_ が使用されます。
ここでは、指定されていない場合でも Perl が $_ を想定する場所をいくつか示します。
ord() や int() などの関数と、デフォルトで STDIN で動作する「-t」を除くすべてのファイル テスト操作 (「-f」、「-d」) を含む、さまざまな単項関数。
print() や unlink() などのさまざまなリスト関数。
「=~」演算子を使用しないパターン マッチング操作「m//」、「s///」、および「tr///」。
「foreach」のデフォルトの反復変数は、他の変数が指定されていない場合にループします。
grep() および map() 関数の暗黙的な反復変数。
"while" に条件が 1 つだけあり、その条件が "" 操作の結果をテストする場合、$_ が入力レコードのデフォルトの場所になります。これは、「while」テスト条件以外では起こりません。 (ニーモニック: 一部の操作ではアンダースコアを省略できます。)
特殊変数の使用の性質に応じて、次のカテゴリに分類できます。
グローバルスカラー特殊変数。
グローバル配列特殊変数。
グローバルハッシュ特殊変数。
グローバル特殊ファイルハンドル。
グローバルな特殊定数。
正規表現の特殊変数。
ファイルハンドルの特殊変数。
以下に、特殊文字と英語形式を含む変数を含む、すべてのスカラー特殊変数をリストします。
| $_ | デフォルトの入力およびパターン マッチングのコンテンツ。 |
| $ARG | |
| $。 | 最後に読み取られたファイルハンドルの現在の行番号 |
| $NR | |
| $/ | レコード区切り文字を入力します。デフォルトは改行文字です。 undef 変数を使用すると、ファイルの終わりが読み取られます。 |
| $RS | |
| $、 | 出力フィールド区切り文字 |
| $OFS | |
| $ | 出力レコード区切り文字 |
| $ORS | |
| $" | この変数は $ に似ていますが、配列の値を補間し、二重引用符で囲まれた文字列 (または同様の補間文字列) にスライスするために使用する必要があります。デフォルトは 1 つのスペースです。 |
| $LIST_SEPARATOR | |
| $; | 多次元配列をシミュレートするときに使用される区切り文字。デフォルトは「 34」です。 |
| $SUBSCRIPT_SEPARATOR | |
| $^L | 給紙は出力チャネルに送られます。デフォルトは「f」です。 |
| $FORMAT_FORMFEED | |
| $: | 継続フィールド (^ で始まる) を埋めるために文字列を分割できる現在の文字セット。デフォルトは "n"" です。 |
| $FORMAT_LINE_BREAK_CHARACTERS | |
| $^A | 印刷前にフォーマットされたデータを保持する変数 |
| $アキュムレーター | |
| $# | 数値を印刷するときのデフォルトの数値出力形式 (非推奨)。 |
| $OFMT | |
| $? | 前の外部コマンドのステータスを返します。 |
| $CHILD_ERROR | |
| $! | この変数の数値は errno の値であり、文字列値は対応するシステム エラー文字列です。 |
| $OS_ERROR または $ERRNO | |
| $@ | eval コマンドのエラー メッセージ。空の場合は、最後の eval コマンドが正常に実行されたことを意味します。 |
| $EVAL_ERROR | |
| $$ | 現在の Perl スクリプトを実行しているプロセス番号 |
| $PROCESS_ID または $PID | |
| $< | 現在のプロセスの実際のユーザー番号 |
| $REAL_USER_ID または $UID | |
| $> | 現在のプロセスの実効ユーザー ID |
| $EFFECTIVE_USER_ID または $EUID | |
| $( | 現在のプロセスの実際のグループ ユーザー番号 |
| $REAL_GROUP_ID または $GID | |
| $) | 現在のプロセスの実効グループユーザー番号 |
| $EFFECTIVE_GROUP_ID または $EGID | |
| $0 | 実行中のスクリプトのファイル名が含まれます |
| $PROGRAM_NAME | |
| $[ | 配列の最初の要素の添字。デフォルトは 0 です。 |
| $] | Perl のバージョン番号 |
| $PERL_VERSION | |
| $^D | デバッグフラグ値 |
| $デバッグ | |
| $^E | 非 UNIX 環境でのオペレーティング システムの拡張エラー メッセージ |
| $EXTENDED_OS_ERROR | |
| $^F | ファイル バンドル記述子の最大値 |
| $SYSTEM_FD_MAX | |
| $^H | コンパイラによってアクティブ化された構文チェックのステータス |
| $^I | 組み込みのコントロールエディターの値 |
| $INPLACE_EDIT | |
| $^M | 予備メモリプールサイズ |
| $^O | オペレーティングシステム名 |
| $OSNAME | |
| $^P | 現在のデバッグ値を指定する内部変数 |
| $PERLDB | |
| $^T | 新世紀の初めから始まる、スクリプトの実行が開始された時間 (秒単位)。 |
| $BASETIME | |
| $^W | 警告スイッチの現在値 |
| $警告 | |
| $^X | Perl バイナリ実行可能コードの名前 |
| $EXECUTABLE_NAME | |
| $ARGV | デフォルトのファイルハンドルから読み取るときの現在のファイル名 |
| @ARGV | スクリプトに渡されるコマンドライン引数のリスト |
| @INC | モジュールのインポート時に検索するディレクトリのリスト |
| @F | コマンドラインからの配列入力 |
%INC | ハッシュ テーブル %INC には、do または require ステートメントに含まれるすべてのファイルが含まれます。キーはファイル名で、値はファイルへのパスです。 |
%ENV | 現在の環境変数が含まれます |
%SIG | シグナルの一覧とその処理方法 |
ARGV | 配列変数 @ARGV 内のすべてのファイル名を反復処理するための特別なファイル ハンドル |
標準エラー | 標準エラー出力ハンドル |
標準入力 | 標準入力ハンドル |
標準出力 | 標準出力ハンドル |
データ | 特殊ファイル ハンドルは、スクリプトの内容を含め、ファイル内の __END__ フラグ以降のすべてのものを参照します。または、インクルード ファイルの __DATA__ フラグ以降のすべてを参照します。同じパッケージ内のデータを読み取る限り、__DATA__ が存在します。 |
_ (アンダースコア) | 特殊なファイル ハンドルは、ファイル情報 (fstat、stat、および lstat) をキャッシュするために使用されます。 |
__終わり__ | スクリプトのロジックが終了し、後続のテキストは無視されます。 |
__ファイル__ | 現在のファイル名 |
__ライン__ | 現在の行番号 |
__パッケージ__ | 現在のパッケージ名は main です。 |
$n | 最後のパターン一致の n 番目の部分文字列が含まれます |
$& | 前回成功したパターン一致の文字列 |
$MATCH | |
$` | 最後に正常に一致した部分文字列の前のコンテンツ |
$プリマッチ | |
$' | 前回正常に一致した部分文字列の後の内容 |
$POSTMATCH | |
$+ | 前の正規表現検索パターンに一致する最後の括弧。例えば: /バージョン: (.*)|リビジョン: (.*)/ && ($rev = $+); |
$LAST_PAREN_MATCH |
$| | 0 に設定すると、write 関数または print 関数を呼び出すたびに、関数 fflush が自動的に呼び出され、書き込まれた内容がファイルに書き戻されます。 |
$OUTPUT_AUTOFLUSH | |
$% | 現在の出力ページ番号 |
$FORMAT_PAGE_NUMBER | |
$= | 各ページの現在の長さ。デフォルトは 60 です。 |
$FORMAT_LINES_PER_PAGE | |
$- | 現在のページに残っている行数 |
$FORMAT_LINES_LEFT | |
$~ | 現在のレポート出力形式の名前。デフォルト値はファイルハンドル名です。 |
$FORMAT_NAME | |
$^ | 現在のレポート出力ヘッダー形式の名前。デフォルト値は、接尾辞「_TOP」が付いたファイルハンドル名です。 |
$FORMAT_TOP_NAME |