師匠の散歩

きままにPerlでも

../style.css

Perlで遊ぼう / $_は省略可能なのだが、限界はあるのか確認した。/ checkDollars.cgi

サブルーチンで使う

check0("check 0");
check1("check 1");
check2("check 2");
check3("check 3");
check4("check 4");

sub check0 {
  my $test = shift;
  print $test;         # 表示される
}
sub check1{            # 引数は明記しない
  my $test = shift;    # 変数に  の値を取り込む
  print $test;         # 表示される。
}
sub check2{            # が引数になるのは了解済み
  $_ = shift;          #  に取り込む、は示さなくても問題ない
  print ;              # ここでは  を書かなくても表示される
}
sub check3{
  print @_[0];         #  の第0要素 を扱うので表示される
}
sub check4{
  shift;               #  をshiftするが、
  print ;              #  にはセットされず、表示できない
}
結果
check 0
check 1
check 2
check 3
check 2
確認終了

例4では、うまく表示ができなかった。これはshift関数の使い方に問題があったようだ。つまり、

ということのようだ。

foreachで使う

サブルーチンの他に、foreach文でもcheck 2をよく使うので、確かめてみた。

@data1 = ("x","y","z");
foreach (@data1){       # 通常の使い方 
  print;
}
print "\n";
@data2 = ("1","2","3");
check10 (@data2);

footer2nd();
exit;

sub check10{
# foreach {             # この書式ではエラーが発生した
  foreach (@_){         # 対象配列の明記が必要
    print;              # ループするのは、check 2 が暗黙了解されている
  }
}
結果

xyz
123

checkDollars.cgi // Topに戻る // indexに戻る
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18