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]