ID を追跡するためのスクリプトです。「Leaving」行ではインデントが減少し、「Entering」行ではインデントが増加します。次に、インデント変数に基づいて、スペースが出力されることがわかります。詳細に:
/usr/bin/perl -ne
-n
flag はwhile(<>)
スクリプトの周りにループを配置します。これにより、基本的に perl は stdin または引数ファイルから読み込まれます。
BEGIN { $|=1 }
自動フラッシュがオンになっています。
if (/(bmake|create_dirs\.sh)\[\d+\] Leaving/) { --$indent };
この正規表現は、次のような行を探します
bmake[9] Leaving
create_dirs.sh[2] Leaving
見つかった場合、$indent
変数は 1 減ります。
print " "x($indent * 4), "$_" ;
これは、スペースを 4 *$indent
回繰り返し、その後に入力行を出力します。
if (/(bmake|create_dirs\.sh)\[\d+\] Entering/) { ++$indent }
この行は、上記と同じ方法でインデントを増やします。
正規表現に関する詳細な説明 (こちらを参照してください。ただし、このサイトから構文をクリーンアップしました):
NODE EXPLANATION
--------------------------------------------------------------------------------
( group and capture to $1:
--------------------------------------------------------------------------------
bmake literal string 'bmake'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
create_dirs\.sh literal string 'create_dirs.sh'
--------------------------------------------------------------------------------
) end of $1
--------------------------------------------------------------------------------
\[ literal string '['
--------------------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
\] Leaving literal string '] Leaving'