perl メモ


スカラー変数 
スカラー変数の名前は、$ + 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

[一つ前に戻る] TOP PAGE
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送