2

別のperlscript内で使用されるperlスクリプトをデバッグする方法。両方を別々にデバッグできます。ワンステップでデバッグすることは可能ですか?

元:

!/user/bin/perl

my $param= 8;

my @res=\`perl extract.pl $config`;

print "The results is ....  @res\n";

同様に、シェルスクリプト内で使用されるperlスクリプトをデバッグできますか?

ありがとう。

4

4 に答える 4

4

動的なソリューション:

my $dswitch = $INC{"perl5db.pl"} ? "-d" : "";
my @res=`perl $dswitch extract.pl $config`;

$INC{"perl5db.pl"}デバッガーを使用している場合はtrue、使用していない場合はfalseです。

于 2012-08-17T15:48:23.310 に答える
4

-d呼び出すスクリプトのシバン行にスイッチを追加できます。

#!/usr/bin/perl -d
于 2012-08-17T12:41:55.507 に答える
3

「正しい」ことは、システムコマンドを介して他のスクリプトを呼び出さないように、設計を変更することです。次に、単一のデバッグ環境があります。

最良の設計は、extract.plをモジュールにすることです。

このコマンドを使用してdo、他のファイルからコードをインポートすることもできますdo 'extract.pl'。その場合、必要な唯一の変更は、おそらくあなたが渡す方法でしょう$config

これらのアプローチはどちらも実装が非常に簡単であり、継続的な開発には他の利点があります。このようにしないのには十分な理由があるかもしれませんが、まだ行っていない場合は、最初にこれを検討します。

于 2012-08-17T13:27:28.953 に答える
0

extract.plの値を渡してデバッグするだけ$configです。それが何であるかわからない場合は、古くからのprintfがそれを行います。

say "\$config='$config'";

そして、次のことを行います。

perl -d extract.pl 'Stuff that printed in config'. 

2つは分離されたプロセスであるため、通信はコマンドラインで渡されるものと呼び出されたスクリプトによって出力されるものだけです。したがって、呼び出されたスクリプトは、呼び出し元のスクリプトなしでテストできる必要があります。(ある種のIPCや共有メモリ、またはそのようなトリッキーなものを設定していない限り。)

于 2012-08-17T13:06:30.047 に答える