エセ講師の講座体験に戻るこれが問題のカンニングペーパー。この文章いっこだけで NetNews当たりで袋叩きになりそうな気がするのはなぜでしょうか。
すいません、悪気はなかったんです。ごめんなさいごめんなさい 顔はやめて顔は(なぜにそこまで弱気か>俺)。
Perl講座:
1:イントロ(めっちゃ簡単な例)
固定長ファイルの変換作業を例に
2:Perlの基本的知識: (業務上で覚えておくといいこと)
フィルタの一種
(awk、sed、grepなどと同じ部類に属します)
→これらのフィルタを全部ひっくるめた、ようなもの。Perlが受け入れられる理由。
フィルタでありながら、構造化プログラミングが行える。
プロセス制御などの高度な操作も行えてしまうために、
一般的なプログラム言語にもひけを取らない。長所:
高汎用性(書いてしまえば大抵はUNIXでもWinでもMacでも)
手軽 (最小限以下の環境設定だけで動かせる)
インタプリタ(逐次実行)であること
→コンパイルをする必要がない→簡易に作成できる
→これは短所でもある
詳しい人なら大抵知っている→聞ける。
短所:
可読性(いくらでも省略して書ける性質のため)
インタプリタの関係上、実行毎にコンパイル処理が走る。
巨大・煩雑な処理だとかえって時間もかかりリソースも食う。
(あくまでCなどと比較した場合。 EXCEL VBAと比較するとPerlの方が数十〜数百倍早い。)企業方針などで使用を禁止されている場合もあるので要確認。
→業務に利用する場合は、規模を考えて決定する場合があります。
3:Perl文法説明
いちいち説明してたらキリがないのでサンプルをもとにかいつまんで
・変数・配列・連想配列
変数:$abc、$Count
$Count=1 $Count="aaa"
文字列・数値の区別は無し(Variant)。Perl側でどちらかを判別)配列:@ary, @score
@ary[0]、@ary[1]・・・@ary[n]
@xx = ( "aa" "bb", "cc", "dd" );連想配列(ハッシュ):%xxx、%month
%xx = ( tanaka => "man", suzuki => "female");
print $xx{"tanaka"}; #構造体の代わりとして使うことも多い・制御解釈(if,for,while)
ほとんどCの書き方です。
if ($xx > 5) { print "5より大きい\n"; } elsif ($xx == 5) { print "5ちょうど\n"; } else { print "5より小さい\n"; } for ($xx = 1; $xx <= 10; $xx++) { print "xx = $xx\n"; } while ($xx < 10) { print "xx = $xx\n"; $xx++; }
#上のfor分と同じ動きします for (1..10) { print "xx = $_\n"; }*last→Cにおけるbreak、next→Cにおけるcontinue
・おきまりごと
省略の美学。
スクリプトに記述しなかった場合、Perlが勝手に判断して、 デフォルトに割り当てる。このデフォルト設定がものすごく多い。 関数などでも、大抵はデフォルト関数が設定されており、 変数を使わずして処理してしまうことも可能。○:コーディング量の減少 ×:可読性
ex.入出力の場合。
while(<>){ #←標準入力文字列が勝手に$_に格納 chop; #← $_ から勝手に文末1文字を削除 print; #← $_ を出力すると勝手に判断 }<時間あればこの辺も余裕持って>
文字列解析(比較・置換) - 代表的な関数
4:Perl+CGIの利用例
・実例→しくみ→作成例
・簡単な例を2つ。
Hello,World・掲示板
(注意):HTMLのフォームルールに関しては、あくまでHTMLの中だけで 完結されている。(Perlは関係ない。Cでも同じこと) したがって、プログラムを組む側(Perl)がHTTPに合わせて あげなければならない。