オプショ
ン | 意味 | 説明 |
-e 'code' | codeの実行 | |
-w | 警告 | |
-n | 読み込み(出力なし) | $_にレコードを格納する暗黙の読み込みループを要求 |
-p | 読み込んで出力 | $_にレコードを格納してその内容に処理を施してから自動的に出力する
暗黙の読み込みループを要求。 |
-l | 行末処理 | print
の出力の末尾に出力レコードセパレータを自動的に挿入.-n,-pと組み合わせると自動chompも行う。 |
--0digits | 入力レコードセパレータの設定 | -00段落モード(空行が入力レコードの末尾)。-0777ファイル
モード(ここのファイルが一つのレコード) |
変数 | 名前 | ニック
ネーム | 使用上の
注意 |
$_ | ドル・アンダースコア | データ変数 | nまたはpのオプションを指定すると最後に読み込んだ入力レコード
が$_に保持される。 数多くの組込関数(printなど)のデフォルトのデータソースでもある。AWKでは$0。 |
$. | ドル・ドット | レコード番号変数 | nまたはpのオプションを指定すると、あるいは入力演算子を使用する
と、現在の入力レコ ードの番号が$.に保持される。AWKではNR。 |
シェル | perl | 使用上の
注意 | |
代入 | name=value name="value" | $name=value; $name="value"; $num2=$num1=42; | どちらの言語でも、変数に代入されるvalueをクォートするのはよい
ことだが必ずしも必要というわけではない。 perlでは変数から別の変数へと代入を続けることができる。 |
アクセス | echo $star | print $star; | perlでは$varnameの結果は常にその変数の実際の内容。シェ
ルでは変数の中の特殊文字がアクセスの際に何か別なもので置き換えられることがある。例えば変数に*が代入されていればこのシェルコマンドはファイル名を
エコーする。 |
追加の処理なしでアクセス | echo "$star" | print $star; またはprint "star"; | *などの特殊文字が変数に含まれる場合、シェルで追加の処理(ファイル
名の生成など)を抑止するにはダブルクォートが必要. perlではその必要なし。(使っても害はない) |
アクセスを使った代入。 | name2=$name name2="$name" | $name2=$name; $name2="$name"; | シェルの場合と同様、別の変数から取り出した値を変数に代入可。 |
シェル | perl | コメント |
#! /bin/sh options | #! /usr/bin/perl options | |
$*, "$@" | 引数はn,p,s
オプションまたは<>で自動的に処理さ
れる。 | シェルスクリプトでは、コマンドライン引数は$*または"$@"を使っ
てまとめてアクセス。 |
コマンド
ラインでの構文 | 効果 | コメント |
-name -name='stuff' | -nameを真に設定 -nameをstuffに設定 | -nameの形は、そのスィッチが存在するか(真)しないか(偽)の検
出だけが必要な「オン・オフ」タイプのスィッチに使用する。 例えば、script -debugはscrip中の$debugを真に設定する。 対応する変数に特定の値を割り当てる必要あるスィッチに使用。例えばscript -email='a@b.ca'は$emailにこのアドレスを使用する |
スクリプ
トでの構文 | 効果 | コメント |
our($colors); our($shape,$size); | -color
switchをoptionに -shape及び -size | 指定されない場合に
perlが警告を出すのを防止 our中に複数のスィッチ変数をリストするにはコンマで区切って括弧で囲む |
シェル | perl | コメント |
echo "msg" echo "msg" >&2 echo "msg" >&2 exit 255 | print "msg"; warn "msg\n"; print STDERR "a","b"; beginブロックの外で: die "msg\n"; BEGINブロックの中で条件付き 実行のための論理演算子を使って: $success or warn "msg\n" and exit 255; | STDOUTにmsgを送る STDERRにmsgを送る。\nはwarnのメッセージの完了をperlに指示するため行番号とファイル名が末尾に自動的に付加されることがなくなる。 print STDERRは$,変数を使って自動的に引数を区切るという点でwarnより便利 STDERRにmsgを送ってプログラムを終了する。エラーコードは親プロセスに送られる。dieはデフォルトで255というコードを送る。 BEGINブロックの中のexit関数では引数で値を指定できる。msgの後の\nはメッセージの末尾に行番号とファイル名を自動的に付加すべきでないことをPerlに指示する。 |
変数 | 名前と
ニックネーム | 使用上の
注意 |
$/ $\ $ARGV ARGV @ARGV | ドル・スラッシュ、 入力レコードセパレータ ドル・バックスラッシュ、 出力レコードセパレータ ドル・ARGV(アーグヴィー) ファイル名変数 アーグヴィー ファイルハンドル アット・アーグヴィー 引数配列 | デフォルトでは\nとして表されるOS固有の入力レコードセパレータ用
の文字が設定される。これは-0degitオプションを使って任意の文字に変更するか$/に文字列を代入することで任意の文字シーケンスに変更できる。AWKではRS。例:BEGIN { $/='**'; } $/と同じ文字列を設定する異が推奨される。そうすることで-lオプションが入力に際して除去したのと同じ文字列がprintの出力に自動的に付加。AWKではORS。例:begin { $\=$/='**'; } n,pオプションあるいは空の入力演算子を使用すると、この変数は現在の入力ソースをファイル名またはSTDINを表す-似よって識別する。AWKではFILENAME 現在の入力ソースを何らかの方法で制御するため、特にクローズのために使われる。(これは変数でなくAWKでは対応するものなし) n,pオプションも入力演算子も使わない場合この配列変数から自前でプログラムの引数にアクセスする必要がある。AWKではARGV |
変数 | 名前 | 使用上の
注意 |
$" $, | ドル・ダブルクォート ドル・コンマ | ダブルクォートで囲んだ配列の各要素の間に挿入される文字を保持。デ
フォルトではスペース。AWKでは対応するものなし。 print文の引数の2種類の特殊なフォーマット処理に利用される。この変数の内容は、printの引数を区切るコンマの代わりに出力で使用される。またクォートされていない配列やハッシュの各要素の区切りとして使用される。デフォルトでは空文字。AWKではOFS。 |
一次オプ
ションクラスタ | アプリ
ケーションタイプ | 例 |
-wl -wnl -wnla -wnlaF'sep' | 出力を生成 入力または入出力を処理 フィールド処理(空白文字セパレータ) フィールド処理(カスタムセパレータ) | perl -wl -e 'print "TEXT";' perl -wnl -e 'print;' /etc/passwd who | perl -wnl -e 'print;' $F[0]は入力レコードの先頭フィールドにアクセス perl -wnla -e 'print $F[0]; ' F $F[2]は入力レコードのコロン区切りの第3フィールドにアクセス: perl -wnlaF':' -e 'print $F[2];' F |
レコード
定義クラスタ | 効果 | 例 |
-00 -077 | 段落モードを有効にする。 ファイルモードを有効にする。 | 番号付きで段落を出力: perl -00 -wnl -e 'print "$.: $_";' F 番号付きでファイルを出力: perl -0777 -wnl -e 'print "$.: $_";' F |
スィッチ
クラスタ | 効果 | 例 |
-s | スィッチ処理を有効にする。 | -nスィッチを使い、オプションの番号付きで行を出力: $ print_lines -n F F2 $ cat print_lines #! /usr/bin/perl -s -wnl $n and printf "$.: "; print; |
上書き編
集クラスタ | 効果 | 例 |
-i.extension | 上書き編集を有効にする | F.bakとしてバックアップを作成してから元のファイルに変更を加え
る。: perl -i.bak wnl -e 's/A/B/g; print;' F |
モジュー
ルクラスタ | 効果 | 例 |
-M'mod_name' | 指定されたモジュールをロード | $_の中のタブをスペースにしてから出力 (expandは
Text::Tabsが提供) perl -M'Text::Tabs' -wnl -e 'print expand $_;' F スクリプトでは代わりにuse mod_nameを使用。 |
プログラ
ムクラスタ | プログラ
ムのタイプ | 用途 |
-e 'code' | perlコマンド | スクリプトでなくcode引数でプログラム |
文字列エ
スケープ | 名前 | 生成され
るもの |
\n \r \t \f \e \NNN \xNN \cX | ニューライン リターン タブ フォームフィード エスケープ 8進値 16進値 制御文字 | OSのレコード終了シーケンス キャリッジリターン文字 タブ文字 フォームフィード文字 エスケープ文字 例えば\040はスペース 例えば\x20はスペース 例えば\cCはCtrl-C |
形式 | 意味 | 説明 |
/RE/ m:RE: string =~ /RE/ string =~ m:RE: | $_に対してマッチ $_に対してマッチ stringに対してマッチ stringに対してマッチ | デフォルトデリミタ/とデフォルトターゲット$_を使用 カスタムデリミタ:とデフォルトターゲット$_を使用 デフォルトデリミタ/とターゲットstringを使用 カスタムデリミタ:とターゲットstringを使用 |
メタキャ
ラクタ | 名前 | 意味 |
^ $ \b . [chars] [^chars] [char1-char2] $& \ \Q...\E | 先頭アンカー 末尾アンカー 単語境界 ドット 文字クラス 否定文字クラス 文字クラスの範囲 マッチ変数 バックスラッシュ クォートメタキャラクタ | Xとのマッチを先頭に限定。例:^X Xとのマッチを末尾に限定。例:X$ 例えば \bX, X\b, \bX\b はそれぞれ単語の先頭で、単語の末尾で、単語全体としてのみXにマッチ ニューラインを除く任意の文字にマッチ 文字群の任意の1文字にマッチ。\付き英文字または数字でないメタキャラクタ(例えば!や.)は自動的にリテラルとして扱われる。例:[!.]は感嘆符またはピリオドにマッチ。 リストされていない任意の1文字にマッチ。仝。例:[^!.]は感嘆符でもピリオドでもない任意の文字にマッチ。 例えば[A-Z]は任意の大文字にマッチ 最後にマッチした内容を保持。例えば'Demo' =~ /^[A-Z] を実行したら$&はDを保持。 \Xが特別な意味を持つ場合その意味が使われる(\bは単語境界メタキャラ等)。\Xが特別な意味を持たない場合 Xは正規表現リテラルとして扱われ、\は破棄される。例えば\.はピリオドを意味する。 囲まれている文字群(...)がリテラルとして扱われるようにする.(fgrep style matching) |
ショート
カットメタキャラクタ | 名前 | 同等の文
字クラス |
\w \W \s \S \d \D | 単語構成文字 非単語構成文字 空白文字 非空白文字 数字 数字以外の文字 | [a-zA-Z0-9_] [^a-zA-Z0-9_] [\040\t\r\n\cJ\cL] [^\040\t\r\n\cJ\cL] [0-9] [^0-9] |
修飾子 | 構文例 | 意味 | 説明 |
i x s m g i,g,s,m,x | /RE/i m:RE:i /RE/x m:RE:x /RE/s m:RE:s /RE/m m:RE:m /RE/g m:RE:g | 大文字小文字の違いを無視 拡張モード シングルラインモード マルチラインモード グローバル 複数修飾子 | REフィールドに空白文字とコメントを許す。 メタキャラクタ.をニューラインにもマッチさせる。 ^と$を、ターゲット文字列の絶対的な先頭及び末尾ではなく、ターゲット文字列中の行の先頭と末尾にマッチさせる。 すべてのマッチをスカラーコンテキストかリストコンテキストかによって連続的もしくは集合的にかえす。 すべての組み合わせが順序関係なく可能 |
例 | 意味 | 説明 |
/perl/ m:perl: | perlとのマッチを$_の中で検索 仝、ただし別のデリミタ | $_の中の"perl"にマッチ $_の中の"perl"にマッチ |
$data =~ /perl/i $data =~ / perl /xi $data =~ m%perl # PeRl too! %xi | perlとのマッチを$dataの中 で検索、大文字小文字の違い は無視 仝、ただしxが拡張構文 を要求 仝、ただし#コメントを追加し、 デリミタとして%を採用 | $dataの中の"perl","PERL","Perl"などに マッチ。 $dataの中の"perl","PERL","Perl"などにマッチ。修飾子xにより任意の空白文字と#コメントを正規表現フィールドに含めることができるため、これらの文字は前にバックスラッシュがつかない限り無視される無視される。 $dataの中の"perl","PERL","Perl"などにマッチ。正規表現の中の空白文字と#コメントは前にバックスラッシュがつかない限り無視される。 |
構文 | 名前 | 説明 |
X|Y|Z | 選択 | このメタキャラクタは水平バーで区切られたパターンのいずれかにマッチさせる.この例では、X,Y,Zのいずれかのパターンとのマッチを探す。 |
\(x\) (X) (X) \1,\2,... | キャプチャ括弧(grep) グループ括弧(egrep,Perl) キャプチャ及び グループ括弧(GNUegrep, Perl) 後方参照(grep,GNU egrep, Perl) | キャプチャ括弧はその中のマッチ内容を後で利用できるよう保存する。grepではカッコの前のバックスラッシュが必要. グループ括弧は、つけられたメタキャラクタの効果がグループに適用されるようにする。a(X|Y)bのように選択で使われたり, (X|Y)+の用に選択の繰り返しに使われたり,(XY)+のように複数文字シーケンスの繰り返しに使われる. これらのユーティリティでは、キャプチャとグループ化の両方の機能を括弧が提供する。 これらは第一、第二、などなどのキャプチャ括弧中のパターンにマッチして保存された最新の内容にアクセスする めに正規表現中で使われる。 |
perl
拡張 | ||
$1,$2,... | 番号付き変数 | これらは後方参照に似ているが、置換演算子の置換後文字列フィールド中や、マッチ演算子または置換演算子の後に続くコード中など、正規表現の外側で使われる。 |
構文 | 意味 | ユーティ
リティ | 説明 |
X* X+ X? | オプションかつ 繰り返し可 必須かつ 繰り返し可 オプション | grep, egrep, perl egrep, perl egrep, perl | xの0回以上の繰り返しにマッチ. Xの1回以上の繰り返しにマッチ xの0回または1回以上の繰り返しにマッチ |
X\{min,max\} X\{min,\} X\{count\} X{min,max} X{min,} X{count} X{,max} | 繰り返し回数 繰り返し回数 繰り返し回数 | grep GNU egrep, perl perl | 第一の範囲指定の形の場合、Xのminからmaxまでの繰り返し. 数字1つとコンマの場合,maxを省略すると繰り返しの上限なく、minを省略するとmaxまで繰り返す. それ以外ではXのcount回の繰り返しに限定される。 grepでは括弧の前にバックスラッシュが必要。 |
REP? | ケチなマッチング | perl | 上記の量指定子(REPで表す)の直後に?がつく場合、perlは最長(これがデフォルト)のマッチではなく、最短のマッチを探す。典型的な例は、.*? |
メタキャ
ラクタシークェンス | 意味 | 説明 |
.* .+ .*? .+? | 最長の0回以上 最長の1回以上 最短の0回以上 最短の1回以上 | 無もしかは可能な限り長い文字シーケンスにマッチ 可能な限り長い1文字以上の文字シーケンスにマッチ 無もしくは可能な限り短い文字シーケンスにマッチ 可能な限り短い1文字以上シーケンスにマッチ |
マッチ演
算子 | マッチン
グタイプ | 説明 |
/\bMinimal\b.+\bPerl\b/s /\bMinimal\b\s+\bPerl\b/ /\bMinimal\b[\s:,-]+\bPerl\b/ | 単語の順序付 単語の連接 単語の連接、 間に句読点も可 | 修飾子 s により、 . はニューラインにもマッチする。結果的にこのパターンは指定された順序で現れる単語にマッチする。 単語と単語の間に何がきても構わない(例えば”Minimal training on Perl”にマッチ) 連接した単語にマッチ、\sが(他の空白文字と同様)ニューラインにもマッチするため、修飾子sがなくても行境界を越えてマッチする.例えば1行め末尾の"Minimal"と続く2行目の先頭の"Perl"にマッチ. 上のパターンの拡張(空白文字,コロン,コンマ,ハイフンの任意の組み合わせが間にきて構わない)。例えば1行目の末尾の"minimal:"とそれに続く2行目の先頭の"Perl"にマッチ。 |
Unix
コマンド | 対応する
perlコマンド | 処理タイ
プ | 節 |
grep 'RE' F grep -v 'RE' F grep -i 'RE' F grep -l 'RE' F fgrep 'STRING' F | perl -wnl -e '/RE/ and print;' F perl -wnl -e '/RE/ or print;' F perl -wnl -e '/RE/i and print;' F perl -wnl -e '/RE/ and print $ARGV and close ARGV;' F perl -wnl -e '/\QSTRING\E/ and print;' F | マッチする行の表示 マッチしない行の表示 大文字小文字の違いを無視 ファイル名だけを表示 文字リテラルとのマッチング | 3.3.1 3.7 3.9.1 3.8 3.5 |
形式 | 説明 |
s/RE/new/g s:RE:new:g $somevar =~ s/RE/new/g $somevar =~ s:RE:new:g | デフォルトのデリミタ/を使い、変数$_に見つかった正規表現REとの
マッチをすべてnewと言う値で置き換える。 仝、ただしカスタムデリミタ: デフォルトのデリミタ/を使い、変数$somevarに見つかった正規表現REとのマッチをすべてnewと言う値で置き換える。 仝、ただしカスタムデリミタ: |
修飾子 | 意味 | 説明 |
i x s m g | 大文字小文字の違いを無視 拡張モード シングルラインモード マルチラインモード グローバル | マッチングに際して大文字小文字の違いを無視 REフィールドに空白文字とコメントを許す メタキャラクタをニューラインにもマッチさせる ^と$を、レコードの先頭と末尾ではなく、レコード中の行の先頭と末尾にマッチさせる。 レコードごとに複数の置換を許し、スカラーコンテキストかリストコンテキストか似よって異なる値を返す |
e | 評価 | newをperlのコードとして評価し、REにマッチしたものをその結
果で置き換える。 |
例 | 意味 |
s/perl/Perl/; s/perl/Perl/g; $oyster =~ s/perl/Perl/g; $oyster =~ s/\bperl\b/'$&'/ig; | $_の中でもっとも左側に現れるperlをPerlで置き換える。一般
にはグローバル置換の方が好まれる。 $_の中の個々のperlをグローバルにPerlで置き換える。 $oyster の中の個々のperlをグローバルにPerlで置き換える。 $oysterの中でperlと言う語を(大文字小文字に関係なく)グローバルに検索し、その同じ語を‘’(シングルクォート)で囲んだもので置き換える。(perlを 'perl' 、PERLを 'PERL'に) |
修飾子 | 意味 | 効果 |
\U \u \L \l \E | すべてを大文字に 次を大文字に すべてを小文字に 次を小文字に 変換を終了 | 右側の文字列を\Eまたは文字列の末尾まで大文字に変換 右側の文字を大文字に 右側の文字列を\Eまたは文字列の末尾まで小文字に変換 右側の文字小文字に \Uまたは\Lで開始した変換を終わらせる(オプション)。 |
sedコ
マンド | 対応する
perlコマンド | 意味 | 節 |
sed 's/RE/new/g' F sed '3,9s/RE/new/g' F sed -n '9,$p' F cp F F.bak sed 's/RE/new/g' F > F+ mv F+ F | perl -wpl -e 's/RE/new/g;' F perl -wpl -e '3 <= $. and $. <=9 and s/RE/new/g;' F perl -wnl -e '$. >= 9 and print;' F perl -i.bak -wpl -e 's/RE/new/g;' F | Fのすべての行に置換を試み、 すべての行を出力 Fの3行目から9行目について 置換を試みすべての行を出力 Fの9行目から最終行までを 出力 Fのバックアップコピーを作成してからFの中で置換を実行 | 4.3 4.3.1 4.3.2 4.4.1 4.4.2 4.7.1 |
最新の
awk | perl | コメント |
$0 $1 NR FNR RS ORS FS OFS NF ARGV ARGC FILENAME 該当なし 該当なし 該当なし RSTART RLENGTH | $_ $F[0] $. 該当なし $/ $\ 該当なし $, @F @ARGV 該当なし $ARGV $& $` $' 該当なし 該当なし | awkの$0は現在の入力レコードの内容を保持。perlでは$0はス
クリプトの名前を保持しており、現在の入力レコードの内容は$_に保持する。 これらの変数は、現在の入力レコードの第一フィールドを保持する。 この「レコード番号変数」は最新の入力レコードの順序番号を保持する.2行のファイルに続けて3行ファイルを読み込んだらこの変数値は5になる. 「ファイル別レコード番号」変数。最後に読み込んだファイルにおける入力レコード順序番号。.2行のファイルに続けて3行ファイルを読み込んだらこの変数値は3になる.(perlで eof and close ARGV での$.と同じ) 「入力セパレータ」変数(入力レコードの終わり)。awkではラインフィードだがperlではOSのデフォルト 「出力レコードセパレータ」変数(printが各出力の末尾に付加する文字)awkではラインフィードだがperlではOSのデフォルト awkではFSへの代入などによって、「入力フィールドセパレータ」を定義できる。 「出力フィールドセパレータ」変数は出力時printの引数間でコンマの代わりに使用すべき文字列を指定する。 「フィールド数」変数 「引数ベクタ」変数。スクリプトの引数を保持。 「引数カウンタ」変数。スクリプトの引数の数を保持(perlでは$ARGC=@ARGVで可) プログラムに最後に入力したファイルの名前 最後のマッチを保持 最後のマッチの開始部の前 最後のマッチの末尾の後ろ 最後のマッチの開始位置.perlなら,pos() - length($&) 最後のマッチのバイト数。perlなら,length($&) |
構文 | 効果 | コメント |
($A,$B)=@F; ($A, undef, $C)=@F; $numfields=@F; | 第1フィールドを$Aに、第2フィールドを$Bに 第1フィールドを$Aに、第3フィールドを$Cに フィールド数を$numfieldsに | 使用する各フィールドに変数を指定 undefは第2フィールドに変数を指定しないことを表す。 スカラー変数 |
代入文の
形(@Fはa、b、cを保持) | 結果とし
ての代入 |
($first, $second,$third)=@F; (undef, $second, $third)=@F; ($first, undef, $third)=@F; ($first, $second, undef)=@F; ($first, $second )=@F; | A->$first, B->$second ..etc A->undef ..etc B->undef ..etc C->undef ..etc C-> ..上と同じ結果 |
awk | perl | 説明 |
print name "\t" age 出力: Suzy--->29 print name, age 出力: Suzy 29 print "NR is:",NR 出力: NR is: 13 print name 出力: Suzy | print $name,"\t",$age; または print "$name\t$age"; 出力: Suzy--->29 print "$name $age”; 出力: Suzy 29 print "\$. is: $." 出力: $. is: 13 print "$name" または print $name 出力: Suzy | -perlではコンマなしで引数を併置
できないがシェルに似た変数展開機能があるため出力項目は一般的にダブルクォートで囲む。-->はタブ文字を表す。 AWKではprint文中のコンマによりOFS(デフォルトでスペース)が挿入。perlではスペースprintへのをクォート引数中に含めるか、$,に設定。 AWKではダブルクォート中の変数名は文字リテラルとして扱われる. perlでは""中の$の前に\を入れて変数展開を抑制する必要がある。(シェルと同様) ""中に1つの変数名しかないときダブルクォートは効果がなくなり省略できる。 |
オプショ
ンと引数 | 意味 |
F'///' F'\t' F'\t+' F'\s+' F'[,;!?] F'[^\w];' | ///が1つのフィールドセパレータ tab 複数の連続するタブ 複数連続空白文字(これがデフォルト) []内文字の1回以上の連続 複数の非単語攻勢文字 |
awkプ
ログラムのタイプ | awkで
の形とプログラムの例 | perl
での形とプログラムの例 | 説明 |
パターンとアクション パターンのみ アクションのみ | Pattern { Action } 例: /RE/ { print NR } Patern 例: /RE/ NR > 1 {Action} 例: {print} | Pattern and Action; 例: /RE/ and print $.; Pattern and print; 例: /RE/ and print; $. > 1 and print; Action 例: print; | /RE/にマッチするレコードの番号を出力。 上は/RE/にマッチするレコードを出力 下は先頭を除く全レコードを出力 全レコードを出力 |
awk | perl | 説明 |
1 <= NR && NR <= 3 NF != 2 $2 =~ /^9/ | 1 <= $. and $. <= 3
and print; @F != 2 and print; $F[1] =~ /^9/ and print; | レコード1から3迄出力 フィールド数が2でないレコードを出力。 第2フィールドが9で始まるレコードを出力。 |
{ print $NF } { print NR ": " $0 } | print $F[-1]; print "$.:$_"; | 各行の最終フィールドを出力。perlでは負の添字を使用。 レコードの前にレコード番号を付加 |
END { print NR } | END { print $.; } | 読み込んだレコード総数を報告。 |
BEGIN { print "AVERAGE:" } { total=total +$0 } END { print total /NR } | BEGIN { print "AVERAGE:"; } $total=$total + $_; END { print $total / $.; } | 単一の数からなる入力行についてそれらの数の平均を報告。 |
演算子 | 構文 | 例 | 説明 |
.. ... | expr1 .. expr2 and something expr1 ... expr2 and something | /start/ .. /stop/ and print; /start/ ... /stop/ and print; | "start"
を含む最初のレコードから"stop"を含む最初のレコード(これらは同じレコードでも構わない)までのすべてのレコードを出力し、それから”
start"を含む次のレコードを探してと言う具合に処理を繰り返す。"stop"が見つかるとこの演算子は"E0"で終わる文字列を返す。
(scan4oops参照) expr1について真になったレコードを過ぎるまでexpr2の最初の評価が行われないため、両方のパターンが 同一のレコードにマッチすることはない.あとは仝。 |
awk | perl 数値 | 文字列 | 意味 |
== != > >= < <= | == != > >= < <= | eq ne gt ge lt le | |
該当なし | <=> | cmp | 比較 |
演算子 | 名前 | 処理 |
++ -- | プラス・プラス マイナス・マイナス | インクリメント デクリメント |
* / % | スター スラッシュ モジュラス | 乗算 除算 整数除算の剰余 |
+ - | プラス マイナス | 加算 減算 |
+=,-=,*=,/= | 複合代入 | $A += 1 は $A = ($A +1) |
構文 | 意味 |
-X filename ! -X filename -X ! -X | filenameが属性Xを持つことをテスト filenameが属性Xを持たないことをテスト $_に名前指定されたファイルが属性Xを持つことをテスト $_に名前指定されたファイルが属性Xを持たないことをテスト |
ファイル
属性 | 古典的
find | GNU
find | perl | perl
演算子 |
通常/プレーン ディレクトリ シンボリックリンク 名前付きパイプ キャラクタ ブロック ソケット 空 空でない | E E E E E E E E E | E E E E E E E E E | E E E E E E E E E | -f -d -l -p -c -b -S -z -s |
実UID/GIDで読み取り可 実UID/GIDで書き込み可 実UID/GIDで実行可 実UIDが所有 実効UID/GIDで読み取り可 実効UID/GIDで書き込み可 実UID/GIDで実行可 実UID/GIDが所有 指定のUID/GIDが所有 | - - - - - - - - E | - - - - - - - - E | E E E E E E E E E | -R -W -X -O -r -w -x -0 stat |
setuid setgid sticky テキスト バイナリ | P P P - - | P P P - - | E E E E E | -u -g -k -T -B |
別のファイルより新しい 別のファイルより後にアクセスされた リンクの数 inode番号 | E - E E | E E E E | P P P P | stat stat stat stat |
スカラー
をリストに | リストを
スカラーに |
split関数 オプションクラスタの-wnlawnlp | scalar関数 ダブルクォート join関数 |
perl
の組み込み関数 | Unix
親族 | 目的 | 効果 |
split localtime stat,lstat chomp rand | cutコマンド、 AWKのsplit関数、 シェルのIFS変数 dateコマンド ls -lLコマンド ls -lコマンド 該当なし シェルのRANDOM変数、 AWKのrand関数 | スカラーをリスト に変換 原罪の日付と時刻 にアクセス。 ファイル情報に アクセス 乱数を生成 | 文字列とセパレータを引き数にとり、分割 後の部分文字列を返す。デフォルトのセパ レータは任意の空白文字シーケンス。 Unixのdateコマンドからの出力に似た 文字列を返す。 statの引数で指定されているファイルまたは lstatの引数として指定されているシンボリッ クリンクについての情報を返す。 文字列から末尾の、入力セパレータ(デフォル トでニューライン)を取り除く。 |
典型的な
呼び出し形式 | |
@fields=split; @fields=split /RE/; @fields=split /RE/,string; | |
例 | 説明 |
@fields=split; @fields=split /,/; @fields=split /\s+/, $line; @fields=split /[^\040\t]+/, line; | 空白文字を区切りとして$_を「語」に分解し、そのリストを
@fields
に代入する(以下も仝) コンマを区切りとして$_を分割 空白文字シーケンスを区切りとして$lineを分割。 「スペース、タブ、アンダースコア」以外の1文字以上の並びを区切りとして$lineを分割 |
典型的な 呼び出し形式 | |
$time_string=localtime; $time_string=localtime timestamp; @time_component_numbers=localtime; $time_component_number=(localtime)[index]; | |
例 | 説明 |
$time=localtime; print $time または print scalar localtime; print scalar localtime((stat filename)[9]) ($sec, $min, $hour, $dayofmontn, $month, $year, $dayoofweek, $dayofyear, $isdst)=localtime; $dayofyear=(localtime)[7] +1; print "DAy of year: $dayofyear"; | スカラーコンテキストでは、localtimeは現在の日時をdate
コマンドと同様の形式で返す localtimeは、statが返す数値のタイムスタンプをdateの出力と同様の文字列に変換するのにも使える。この例ではfilenameが最後に更新された日時を表示している。 日付関連の値は殆ど0から始まる。例えば$dayofweekは0ー6。 $yearは1900を起点とするため2000年は100と表す。 リストを返す他の関数と同じくlocaltime呼び出しを括弧で囲ん で配列のように添字をつけることができる。 |
典型的呼
び出し形式 | |
($dev,$ino,$mod,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)=stat
filename; $extracted_element=(stat)[index] | |
例 | 説明 |
(undef,undef,undef,undef,$uid)=stat '/etc/passwd'; print "passwd is owned by UID: $uid\n"; print "File $f's inode is : ", (stat $f)[1]; | ファイルのユーザIDはstatのリストの第5の要素として返されるためここに記したように名前付き変数を初期化した後は その値を$uidとして使うことができる。 stat呼び出しを括弧で囲んで(配列の様に)添字を付けることができる。この例では第2の要素つまり当該ファイルの inode番号にアクセスしている。 |
listfile rygel -rwxr-xr-x 1 yumpy users 415 Sun May 14 19:32:05 2006 rygel 12行目でリストにstatからの出力を代入$mtimeで終わる。6/13 |
典型的な呼び出し形式 | |
chomp $var; chomp @var; chomp ($var1,$var2,@var,...); | |
例 | 説明 |
print 'Enter your size: '; $size=<stdin>; chomp $size; #これでニューラインを恐れることなく$sizeが使える。 chomp ($flavor,$freshness,@lines); | このようにして読み込んだ入力行には末尾のニューラインがついており,混乱に陥る。それをchompで回避。 chompは括弧で囲んだ複数の変数を引数にとることができる。 |
典型的な呼び出し形式 |
|
$random_tiny_number=rand; $random_larger_number=rand N; $random_element=$some_array[ rand @some_array ]; |
|
例 |
説明 |
$num=rand; $num=int (rand 10) + 1; $element=$ARGV[ rand @ARGV ]; |
浮動小数点数Nを$numに代入 整数N(1<=N<=10) 指定された配列から無作為に選択した要素を$elementに代入。左記ではスクリプトの引数リストから無作為に選択した引数を代入。 |
Perlの組込関数 |
Unix親族 |
目的 |
効果 |
sort reverse join grep map |
sortコマンド tac printfコマンド、 awkのsprintf関数 egrepコマンド sedコマンド |
リストのソース リストの反転 リストからスカラーへの変換 リストのフィルター処理 リストの変換 |
リストを受け取り,ソース済みリストを返す 主としてソートとの組で使用 リストのすべての要素を指定の文字列で結合した結果のスカラーを返す。 リスト中の選択された要素を返す. リスト要素の変換バージョンを返す。 |
Unixのパイプライン |
Perlの関数 |
入力ー>コマンド(複数可)ー>出力 |
出力≪ー関数(複数可)≪ー入力 |
例 |
|
ls | grep 'X' > X_files ls | grep 'X' | sort | > X_files.s |
@x_files= grep{ /X/ } @fnames; @X_files_s=sort grep{ /X/ } @fnames; |
典型的な呼び出し形式 |
|
sort LIST reverse sort LIST sort { CODE-BLOCK } LIST reverse sort { CODE-BLOCK } LIST |
|
例 |
説明 |