【Perl】 特殊変数

chakenji106
$_、@_等

$_

Perlのありとあらゆる局面で変数が省略されたときに省略されたものとみなされる変数。
Perlの一文字変数の攻略 | Hachioji.pm 日めくりテックトーク

while () { # $_ への暗黙の代入が発生する
Perlの一文字変数の攻略 | Hachioji.pm 日めくりテックトーク

1.
foreach $list (@lists) {  # 配列@listsのそれぞれの値が変数$listに入る
print $list;
}

2.
foreach (@lists) {  # 配列@listsのそれぞれの値が特殊変数$_に入る
print $_;       # $_の値を表示する
}

3.
foreach (@lists) {  # 配列@listsのそれぞれの値が特殊変数$_に入る
print;        # $_の値を表示する。$_は、省略可能
}

上の3つは、同じ実行結果になる。

@_

サブルーチンを定義した場合に、引数が入っている配列です。
Perlの一文字変数の攻略 | Hachioji.pm 日めくりテックトーク

sub abc {
my ($foo, $bar, $buz, $quux) = @_;

}
Perlの一文字変数の攻略 | Hachioji.pm 日めくりテックトーク

“sub abc {
my $foo = shift;
my $bar = shift;
my $buz = shift;
my $quux = shift;

}
http://hachiojipm.github.io/entry/2013-09-16-perlonechar.html

$@

$z = eval’10 / 0′;
とすると、
$zの値は、undef(未定義値)
$@の値は、Illegal division by zero at (eval 1) line 1.
になる。

$z = eval’10 / 2′;
とすると、
$zの値は、5
$@の値は、undef(未定義値)
になる。

エラーが発生した場合は$@という特殊変数にエラーの内容が設定されますので、この変数をチェックすることでエラーが発生したかどうかを調べることができます。
現代的なPerlの記述方法一覧 – サンプルコードPerl入門

eval(expr)やeval{…}で、ブロックや括弧内をPerlのスクリプトとみなして実行する。最後に実行した命令の結果が戻り値として返される。

エラーやdieだったら、undefineを返し、$@にエラーメッセージを格納する。evalを用いて、Perlのプログラムの異常終了を防ぐことができる。
Perl – eval()とは?warn、dieも。 – marsonicの日記

eval関数で実行させたプログラムで異常が発生したかどうかは変数$@で判断できる。変数$@には異常が発生した原因を示すエラーメッセージ文字列が格納される。異常が発生せず正常に終了した場合にはnull文字列が格納される。
4-2. Perl の危険な関数

リンク

”とほほのperl入門(概要編)
”◆ その他の特殊変数($X)
http://www.tohoho-web.com/wwwperl1.htm#Tokushu

https://matome.naver.jp/odai/2148142660129557701
2016年12月12日