perl デバッガーでスクリプトのすべてのサブルーチンをリストし、結果を外部ファイルに入れようとしました。しかし、うまくいきませんでした。
私のコード:
perl -d -S myscript.pl > results.txt
-S
= すべてのサブルーチンを一覧表示する-d
= Perl スクリプトのデバッグ
はじめまして、
-S コマンドラインスイッチとして使用することは想定されていません。実行perl -d
するとデバッガー プロセスが開始され、そこで使用できるコマンドの 1 つがS
.
例:
$ perl -d tmp/splithttpdconf.pl
Loading DB routines from perl5db.pl version 1.28
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(tmp/splithttpdconf.pl:6): my $basedir = shift;
DB<1> S main::
main::BEGIN
main::debug
main::splitconf
DB<2>
必要な種類の出力を取得するには、代わりにプロファイラー モジュール Devel::DProf を使用できます。dprofpp プログラムで読み取ることができるファイルにプロファイラー情報を出力します。サブルーチンのリストを取得する例を次に示します。
perl -d:DProf perlscript.pl; dprofpp -T
他のモジュールからロードされたサブルーチンではなく、独自のスクリプト内のサブルーチンのみが必要な場合は、次のように grep を追加します。
perl -d:DProf perlscript.pl; dprofpp -T | grep main::
ただし、特定のプログラムにどのサブルーチンが存在するかを知るという特定の質問については、一貫したコーディングスタイルを使用する場合、grep "sub.*{"
最初から a を実行する方がおそらく簡単です。
ホーム ディレクトリに、次の内容の .perldb というファイルを作成します。
parse_options("NonStop=1 LineInfo=results.txt AutoTrace=1 frame=2");
そして、コマンドを実行します
perl -d myscript.pl
サブルーチン全体をスキャンして一覧表示する場合は、実行前に Perl が参照するものを次のように指定します。
perl -MO=Deparse -f myscript.pl