1. ホーム
  2. スクリプト・コラム
  3. パール
  4. アプリケーションのヒント

perl スクリプティング スタディガイド - 読書メモ

2022-01-28 08:03:52

undef デフォルトの未定義文字、PerlにNULLはない defined($x)関数:引数がundefなら偽を返す。

qw(cs phy geo) は ("cs", "phy", "geo") と似ていて、リストを配列 @array に代入することができます。

配列演算子:末尾のpop,push、先頭のshift,unshift、逆順、@array = sort @arrayです。

foreach @array{print $_;} は配列を表示します。$_ は非常に強力なデフォルト変数です。

各操作で、@array のペア (インデックス、値) を返し、while ループで使用されます。

Perlはスカラーやリストのコンテキストに自動的に適応します。

subは、サブルーチン(関数)を定義し、引数は、@_配列になります、呼び出しプログラムは&ampを使用することができます。

関数の永続的なプライベート変数で、state で識別され、関数が呼び出されるたびに最後に変更されたものと同じになります。

myは変数のスコープを現在のロールに限定し、一般にmyで変数を定義します。

デフォルトでは、引数リストにあるすべてのファイルを読み込みますが、各行の末尾に" \n "が付きます。

printfは出力をフォーマットすることができますが、sprintfはより強力です。

ファイルハンドル: open CONFIG, '>>:utf8', 'ファイル名' または die "failed : $! ", die は例外をスローし出力を生成、CONFIGをクローズします。

ファイルハンドルを使用:while(<CONFIG>)と同様にファイルを読み込み、デフォルトの出力ファイルを変更、CONFIGを選択、CONFIGファイルに"123"を出力、これはデフォルトSTDERRを置換可能

ハッシュ配列: キー、値配列; 配列に値を割り当てることができ、ハッシュを展開する; value=>key: 環境変数 %EVN に反転する

キー %hash はキーの配列を返し、値 %hash は値の配列を返す; それぞれ K, V を返す; exists, delete 関数

強力な正規表現。\を使えば、どんな空白にも対応できます。また、括弧を使えば、変数 $1 を捕捉し、次のマッチングが成功するまで有効です。

キャプチャパターンがない。/(? :bronto)?aaaa(bb|CC)/ここで $1 は bb または CC を表します。 /(? <name1>\w+)/ 名前キャプチャ、 $+{name1} です。

自動キャプチャ変数: $`match before $&match to $' match after; /xxxx/p キャプチャ変数をオンにする:高バージョン ${^MATCH}.

s///replacement, sed に似ているが、$1 の取り込みに対応。

split /regular/, $string: 文字列を配列に分割する。

欲張りでない量化子 +? , *? , {8,}? /i は大文字小文字を無視し、/m は改行にマッチします。

$^I = ".bak" は、ファイルを更新し、それを filename.bak として開き、元のファイルに書き戻すことができます。

unless(con): if(!con) と同様; until: 条件が偽なら繰り返す; last は break と同様; next は continue と同様; redo はループ本体 (new) の最初に戻る; タグを追加できる。

stat $filename はファイルに関する様々な情報を返す; my @files = glob "*": 現在のパス内のすべてのファイル名

文字列関数:index, substr; 高度なソート @res = sort {$a<==>$b && $a cmp $b}. 配列

Smart matcher: ~~: ハッシュのキーにマッチ、配列が同じかどうかの判定。

given-when文:switchと同様で、continueとbreakがある。

システムプラスコマンドで子プロセスを実行します。execは別のプロセスに実行され、perlはもはや実行されません。

defined(my $pid = fork) or die "$! " unless($pid){child process working}; send-receive SIGs をサポートしました。

スライス ($first, $last) = (sort @array)[0,-1], 配列、ハッシュは問題なし; evalはエラーをキャッチして返さない。

grep: my @array = grep {$_ % 2} 1..1000; 奇数の配列; my @array = map {&big_money($_)}. dataの各要素を操作する;どちらもリストを返す