Perlの制御構造に関する学習ノート
I. ステートメントの種類
コンピュータは、繰り返し作業を行うことができるという利点がある道具です 。ループの実行、ループ文.
多くの判断が必要、条件付きで実行、条件文
シーケンシャルステートメント。
式真偽値まとめ
式は論理式である必要はないが、真と偽の値が得られることが必要である。
偽の値です。
論理値はfalse
値が0である
文字列が空である
リストが空です
アンデフ
その他の場合は真
II. 条件文のif
フォーム
if(expression){ Spaces are ignored, line breaks can be different
if(expression)
statement} {
elsif(expression) { statement
}
statement}
....
else{
statement
}
説明
(1) elsif, elseの部分は省略可能です。
(2) elsifキーワードに注意する。
(3) ステートメントブロック{}は必ず必要ですが、空でもかまいません。
(4) 入れ子にすることができる。
(5) 意味すること。真であれば実行する、式は実行条件である。
III. 条件文 UNLESS
unless(expression){statement}
if条件の逆で、式が真でなければ文を実行し、真であれば終了する、式が終了条件です。
IV. whileループ
while(expression){statement}
(1) 実行条件であるexpressionがtrueの時に実行する。
(2)条件はfalseになる可能性があるように設定しないと、非拘束ループから抜け出せない。
do{statement}while(式)
少なくとも1回、判定前に1回実行する。
V. までのループ文
until(expression){statement}
(1) whileとは逆に、式が真にならなくなるまで文を実行する。
(2) 真のとき停止し、式が終了条件となる。
do{statement}until expression)
条件判定の前に少なくとも一度はステートメントを実行する。
VI. for ループ
for(式1;式2;式3){statement}。
(1) 式1:制御変数などを初期化し、最初のループでのみ実行され
カンマ区切りで複数の変数に値を代入する。
(2)式2:ループ毎に比較し、真の時にループする。
(3)式3:ループの各実行後に実行される、制御変数の値を変更すると、通常は自己増加する。
(4) 3つの式はすべて省略可能だが、2つの ; は必ず残すこと for(;;)
(5) 1番目と3番目の式は、複数のステートメントを実行するために使用することができます。
例: for($line=<>,$count=1;$count<10;$line=<>,$count++){print $line;}.
VII. foreachステートメント
foreach $w(リストまたは配列) {statement}.
(1) 配列@aの中の()、またはリスト(1,2,3)
(2) $wは新しい変数、または使用済みの変数で、ループ終了時にその値が復元されます。
(3) 各ループでは、配列の長さに関係なく、リストまたは配列の値を順番に$wに代入していき、リストが空になるまで繰り返します。
(4) ループ本体で$wの値が変更された場合、対応するデータ要素の値も変更される。
(5) リストが定数の場合、$wの値を変更することはできません。
(6) $wと@aは同じでもよい、例えば$a(@a)
(7) for と foreach は互換性があり、普遍的である。
foreachの形式
(1) foreach $a(@a){} 一般的な形式です。
(2) foreach $a(1,2,3,4){} リスト
(3) foreach $k(keys%h){} ハッシュフォーム
(4) foreach $a(@a[1,2,3]){} 配列の一部の要素に対してのみ。
(5) foreach (@a){} ループ変数が省略され、デフォルトは $_ になる。
デフォルト変数$_、printで変数$_を表示します。
(6) grep,map関数は、各要素に対してforeachと同等です。
VIII. ループ制御
last:ループを終了する
next:次のループを実行、ループ内のnext以下の文は今回実行されず、変数の自己インクリメントを実行するため。
redo:このループを再実行し、forは、do文の変数自己インクリメントを実行しない、無効である、使用することをお勧めしません。
goto:ジャンプ、ループやサブルーチンにジャンプすることはできませんが、構造化プログラミングにはお勧めしません。
IX. マークアップ
タグは文字とアンダースコアのみで、通常は大文字で、:で区切られます。
マーカー定義:ループ文やステートメント(goto)の前に定義されます。
一般に、ネストされたループの内側のレベルから一番外側のレベルにジャンプするときに使用され、lastは一番外側のループを終了してプログラムが続行されることを意味する。
一番外側のレベルにジャンプして再度実行するのではありません。
例
#! /usr/bin/perl
print "Using tags:";
LABEL:for($i=1;$i<5;$i++){
for($j=1;$j<5;$j++){
print "$j";
last LABEL if $i==3;
}
}
print "\$i=$i";
x. 継続文ブロック
continue{statement}
(1) ループ文に続き、ループ本体の後、次の条件判断の前に実行される。
(2) {}で識別されるステートメントのブロックの後にも使用できます。
(3) lastの次は実行されず、nextとなる。
XI. 単一行条件文とループ文
条件文:文が先、条件が後。print $a if $a==0; ただし、文を実行する前に条件を先にテストする。
同様に
unless: print $a unless($a==0);
while: print $a while($a-==0);
注意:ループ文は制御変数を失い、デッドループを発生させないこと。
|||,&& を使った条件文: $a==0&&print $a;
open(F,'file')||die "can't open";
die関数:コンソールに標準エラー出力メッセージを表示した後、プログラムを終了します。
warn: メッセージを出力した後、プログラムを終了せず、警告の役割を果たすだけです。
$! :エラーコードを格納する内部変数です。
内部変数にエラーメッセージが含まれます。
XII. まとめ
1. 条件文。
if (expression){statement}
elsif(expression){statement}
....
else{statement}
2. 一行文 if(expression)。
3. || または && およびフォーム
4.? は、:form
5. unless(expression){statement}の場合。
(式)でない限り、1行の文です。
6. while until ループ
while(expression){statement}とする。
do{statement}while(式)
while(式){statement}continue{statement}。
一行文 while(式)
until(expression){statement}まで
do{statement}until(式)
until(expression){statement}継続{statement}。
一行文 until(expression)
7. for foreachループ
for(式1;式2;式3){statement}。
foreach (@a){statement}.
foreach $k(keys%hash){statement}.
8. ループ制御:last,next,redo
9.マークアップ:goto LABEL
関連
-
Perlの制御構造に関する学習ノート
-
Perlのサブルーチン 学習メモ
-
日付と時刻を操作するためのPerlのCPANモジュール10個の紹介
-
Perl イテレーションディレクトリの例
-
Perlの単一行コメントと複数行コメントの紹介
-
perlのsrand()とtime関数の使い方の紹介
-
長さを指定し、ランダムなDNA配列を生成するperlスクリプトコード
-
Perl 構文による Perl 演算子の使用法ガイド
-
[解決済み] Perlでタイムアウトを行う方法?
-
問題発生 ----DBI ODBCエラー Perlスクリプトを実行中、エラー:[unixODBC][Driver Manager] データソース名が見つからない、およびデフォルトがない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン