/procファイルシステムには、実行中のプロセスの詳細が含まれています。たとえば、Linux で PID が123の場合、そのプロセスのコマンド ラインは/proc/123/cmdlineにあります。
コマンドラインは引数を区切るためにヌルバイトを使用しています。
unpackを使用する必要があると思われますが、方法がわかりません。さまざまなテンプレート (「x」、「z」、「C*」、「H*」、「A*」など) を使用してみじめに試みました。動作しませんでした。
単純なsplit("\0", $line)
人は仕事をうまくやるでしょう。
に設定でき$/
ます"\0"
。例:
perl -ne 'INIT{ $/ = "\0"} chomp; print "$_\n";' < /proc/$$/environ
実際にこれを使用することはお勧めしませんが、参考までに、機能するであろう解凍テンプレートはですunpack "(Z*)*", $cmdline
。Z
nullで終了する文字列をパックおよびアンパックしますが、これは文字列タイプであるため、繰り返しではなく長さの後の数字またはスター—任意の長さの1つのZ*
nullで終了する文字列をアンパックします。それらをいくつでも解凍するには、括弧で囲んでから、括弧で囲まれたグループに繰り返しを適用する必要があります。これにより、が得られます。(Z*)*