54 perl 豆知識
以下引用部分は
日本語 perl texinfo バージョン 4.0.19.2
Copyright (C) 1990, 1991 高尾 直弥
からです。
54.1 Perl 4 or 5 ?
fml は Backward Compatibility と(私の趣味で) perl 4 で書ける範囲で書か
れています。5は"ほとんど" upper compatible なので4でも5でもOKです。た
だOSによっては5でないとそもそもperlがちゃんと動かないことがあります(5
の方が新しいからOS適応性が上なのは当然ですが)。
例: 64ビットマシンやソラリス2なんかは5の方が無難だろう。
54.2 exec LIST
`LIST' の中に 1 以上の引数がある場合、または `LIST' が 1 以上の値を
持つ配列の場合、`LIST' 中の引数で `execvp()' をコールする。
スカラー引数が 1 しかない場合、引数にシェルのメタキャラクターがある
かどうかチェックされる。もしあれば、parse するために全引数が
`/bin/sh -c' に渡される。もしなければ、引数は単語毎に分けられ、
`execvp()' にそのまま渡される。この方が効率的だからである。
54.3 system LIST
`exec LIST' と全く同じことをするが、違いは最初に `fork' を行い、親
プロセスは子プロセスが完了するのを待つ点である。
注意:shell escape character check してからexec sh -c 等に入る
54.4 open
最終的に exec (do_exec in doio.c)を呼ぶので、この場合のメタキャラクタ
の取り扱いも同じ
54.5 perlはinterpreter
必要のないコードは評価しない方が“少しは”はやいよね、きっと
#そうして、require ってのが増えていく(笑)
54.6 変数
基本はグローバルで、localで明示的にlocal variableにする。
そうでなければ前に評価した時の値のままなんです。
#でもって、interpreterなんですよね、perlは
だから、“config.phを評価する時に$DIRに入っている値”が重要になるわけ
ですね。
54.7 @INC
@INC : perl スクリプトを探す場所のリスト
========================================
`@INC': perl スクリプトを探す場所のリスト
`do EXPR' コマンドまたは `require' コマンドで評価される。
最初は コマンドスイッチ `-I' で指定した引数 + デフォルト perl ライブラリ
(多分 `/usr/local/lib/perl'、次に `.' すなわちカレントディレクトリ )が入っ
ている。
-----------------------------------------
% perl -e '$,="\n", print @INC'
とかしてみればわかりますが、
$DIRの場所
/usr/local/lib/perl
$LIBDIRの場所
の順番で探していくはずです。つまり、
require 'libsmtp.pl'; とか
require 'sys/socket.ph';
がこの順で探されるはずなんですね。
54.8 require
@INCの順でファイルを探してそれをperl scriptとして評価する。
#perlはinterpreterなので必要に応じて取り込んで評価した方がいいはず
54.9 \w
\w は [0-9A-Za-z_] です
54.10 単語
@ARGV Argument Vector
K&R (Programming Language C)
%ENV 環境変数のハッシュテーブル
env(1), environ(7), getenv(3)
%SIG SIGNAL
signal(3)
54.11 perl の習得はやさしいか?
perlの書き方は見ての通り、
shell script, awk, C, sed
の知識がちょっとあれば書けるものです。
初心者でもわかるように 変な書き方をしないよう気をつけているつもりです
けど…あと、わざと同じものをいろいろな書き方で書いてたりもします。
ただ、変なOSやperlのために悲しいことにくどい書き方とかしなきゃいけない
ところもあってちょっと…;_;;_;;_;
気をつけなければいけないこと、それぞれの言語との違い等はperl.texinfoの
* Traps:: 注意点
あたりにあります。このperl.texinfoの日本語版は持っていて損はしないです。
#Larry Wallのperlの本(ラクダ本)とほとんど同じ内容です。
#この本の後半のライブラリ集は見る価値があるのかも知れないが…
perl texinfo in Japanee --- version 4.0.19.2
・perl.texinfo perl.man を日本語に訳して texinfo 形式にしたもの
というものがfj.sourcesに投稿されています。ちなみに
ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/fml/perl.texinfo-j4.0.19.2.tar.gz
にもおいてあります。
fml-support Count: 01582
in fml-support ML's Count:01566
○Perlの勉強に役にたつ書籍・サイト(URL)情報
年寄りの意見かもしれませんが;-)#しかも中身があまりない徒然草(苦笑)
■
○らくだ本と本質的な部分は
ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/fml/perl.texinfo-j4.0.19.2.tar.gz
↑を info で入れておくとすごく便利
○らくだ本にでてくるソースコードはFTPにころがってる
ので、らくだを買う必要は実はないです:-) 後は
○いいソースコードを比較検討することでしょうね。
歌代師匠のは高級過ぎて初心者向きでないような気がしますが(苦笑)…
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
■一番好きだったのは むか〜〜しの うにっくすまがじん です。でも改めて…
は手に入らないでしょうね…
#まだ『東工大と阪大の同人誌』してたころのUNIまが(苦笑)
■プログラミングスタイルの「絶対」というのはないんですが、やっぱり伝統
の味で、#個人的に好き(& 影響を受けてるのは)
4.4BSD
X11
のいいなぁと思うところだけまねするってあたりでしょうか…
#X11 は R5 の方が internationalization がちゃんとしているので R6 より
#R5 の方が完成度は高いといえるんですかね(謎のまた聞き)…
GNU は汎用過ぎて unifdef(1) とかしないと わかりにくいでしょう
VII あとがき
#出典のヒントくらいはするかなっ………と P(^^;;;
#この辺の並びでそよ風を感じる人(おぉ同志よ:-)メールください(^^)
http://www.fml.org/Anime/AminoTetsuro.html
[PREVIOUS CHAPTER]
[NEXT CHAPTER]