スカラー変数 スカラー変数の名前は、$ + 1文字目は英字で始まらなくてはならない。 それ以降は数字、英字および _ は使用可能、- は使用不可 スカラー変数は大文字と小文字が区別される。 スカラー変数を囲む場合、ダブルクォート内では変数展開される。 シングルクォート内では変数展開されない。 コマンド引数($ARGV) コマンドラインからの引数を得る。 @ARGV # 引数の配列 $#ARGV # 結果+1 で 引数の個数 $ARGV[0] # 最初の引数 $ARGV[$#ARGV] # 最後の引数 ------------------------------------------------------------------------ 算術演算子 演算子 + たし算 - ひき算 * かけ算 / わり算 % わり算結果の余り $a ** $b べき算 $a を $b乗した値 文字列に対して、連結(たし算)や繰り返し(かけ算)を実行できる。 連結 . 繰り返し x $c = "AB"; $d = 3; print $c x $d; <出力結果> ABABAB --------------------------------------------------------------------------- 二項代入演算子 元の式 二項代入演算子 $a = $a + $b $a += $b $a = $a - $b $a -= $b $a = $a * $b $a *= $b $a = $a / $b $a /= $b $a = $a . $b $a .= $b $a = $a x $b $a x= $b $a = 1; $a += 2; # これは $a = $a + 2; と同じ print $a; <出力結果> 3 -------------------------------------------------------------------------- オートインクリメント演算子とオートデクリメント演算子 二項代入演算子をさらに簡略化したもので、変数に1を加減することに特定した演算子です。 構文例 名前 意味 ++$a $a++ オートインクリメント $a に1を加える --$a $a-- オートデクリメント $a から1を引く $a = 1; $a++; # これは $a += 1; と同じ print $a; <出力結果> 2 ------------------------------------------------------------------------------ 論理演算子 $a && $b $a and $b 論理積 $a || $b $a or $b 論理和 ! $a not $a 否定 $a が真でなければ真 比較演算子 数字比較 文字比較 より小さい $a < $b , $a lt $b $a が $b より小さければ真 より大きい $a > $b , $a gt $b $a が $b より大きければ真 より小さいか等しい $a <= $b , $a le $b $a が $b より小さいか等しければ真 より大きいか等しい $a >= $b , $a ge $b $a が $b より大きいか等しければ真 等しい $a == $b , $a eq $b $a と $b が等しければ真 等しくない $a != $b , $a ne $b $a と $b が等しくなければ真 比較 $a <=> $b , $a cmp $b $a と $b が等しければ 0 $a が大きければ +1 $b が大さければ -1 --------------------------------------------------------------------------------------- IF 真と偽 Perlにおける、真と偽の定義については次のとおりです。 偽 数値の 0 、文字列の "0"、空きの文字列 ""、未定義値 真 上記以外のもの if ($変数 eq "") { print "空\n"; } elsif ($変数 eq "1") { print "1\n"; } else { print "その他\n"; } if簡易書式 print "文字列\n" if (条件); ?演算子 評価したい内容が「真」か「偽」のみで、処理内容も一行単体ならば?演算子で代用可能 条件式 ? 真の時の処理 : 偽の時の処理 例 ($変数1 == $変数2) ? print "同じ値です\n" : print "値が違います\n"; ---------------------------------------------------------------------------------------- WHILE $cnt = 1; while ($cnt < 100) { print "$cnt \n"; $cnt++; } 条件にかかわらず1回は絶対に処理する場合 do { 処理; } while (条件); -------------------------------------------------------------------------------------- FOR for ($cnt=1; $cnt<3; $cnt++) { print "$cnt \n"; } foreach $cnt (1, 2, 3) { print "$cnt \n"; } ループ制御 next演算子 ループをスキップする last演算子 ループを終了する foreach $cnt(1,2,3,4,5){ if ($cnt == 4) { last; } print "$cnt \n"; } 結果 1 2 3 ---------------------------------------------------------------------------- perl キーボード入力 $変数 = <STDIN>; この場合 改行コードも代入される。 改行コードを消したい時 chomp(スカラー変数) ----------------------------------------------------------------------------- 配列 @配列名 = (1,2,3); 上記と処理は同じ $配列名[0] = 1; $配列名[1] = 2; $配列名[2] = 3; @配列名[3..4] = ("値", "値"); # 3〜4番目の要素に代入します。 $#配列名 リスト変数の数(配列の要素の数,0からはじまる添え字の最大値) 配列の個数は、左辺のスカラー変数に代入することも可能。 $スカラー変数 = @配列名; 配列に要素を追加 @配列名 = (@配列名, "aaa"); ------------------------------------------------------------------------------------- ハッシュ変数 %ハッシュ変数は、キーと値をペアにして、数値や文字列を代入します。 構文例 %ハッシュ変数 = ("キー", "値", "キー2", "値2"); または %ハッシュ変数 = ( "キー" => "値", "キー2" => "値2", ); または $ハッシュ変数{"キー"} = "値"; $ハッシュ変数{"キー2"} = "値2"; keys関数 すべてのキーを取り出す すべてのキーを取り出します。 @配列名 = keys(%ハッシュ変数); print "@配列名\n"; 取り出された配列の順序は一定でないことに注意します。 (values関数,each関数も同じ) values関数 すべての値を取り出す @配列名 = values(%ハッシュ変数); print "@配列名\n"; each関数 1組のキーと値を取り出す ($key, $val) = each(%ハッシュ変数); print "キー $key 値 $val\n"; each関数の場合は次のようにwhile構文と併用した形で使用されます。 while( ($key, $val) = each (%ハッシュ変数) ) { print "キー $key 値 $val\n"; } delete 特定の要素を取り除く キーを指定することで、そのキーと値のペアをハッシュから削除します。 delete $ハッシュ変数{"キー"}; perl スクリプトメモ2