PDL2(またはDevel :: REPL)にPERLデバッガー「X」に相当するものはありますか?

StackOverflow https://stackoverflow.com/questions/3898558

  •  29-09-2019
  •  | 
  •  

質問

使ってます pdl2PDL シェル)また、私のデフォルトのperlインタラクティブシェルとして(それはすべての素敵なプラグインをロードします Devel::REPL)。しかし、私はそれを見逃しています x ダンパープリントエイリアス。 p Piddlesにはいいですが、通常の配列RefまたはHash Refでは機能しません。私はロードしました Data::Dumper しかし、それは深さを制御する簡単な方法を欠いており、私はあなたが深さ制限をすばやく設定できる方法が好きです x, 、例: x 2 $deep_datastruct 複雑なデータ構造用。しかし、と Data::Dumper このプロセスはより面倒です:

pdl> say $c
HASH(0x53b0b60)

pdl> p $c
HASH(0x12b14018)

pdl> use Data::Dumper

pdl> p Dumper $c
$VAR1 = {
          'c' => {
                   'c' => 3,
                   'a' => 1,
                   'b' => {
                            'c' => '3',
                            'a' => '1',
                            'b' => '2'
                          }
                 },
          'a' => 1,
          'b' => 4
        };
pdl>  $Data::Dumper::Maxdepth = 1;
pdl> p Dumper $c
$VAR1 = {
          'c' => 'HASH(0x97fba70)',
          'a' => 1,
          'b' => 4
        };

Perlで デバッガ 同じことを達成できます x 1 $c 直接。します pdl2 似たようなものととても簡潔なものがありますか?

アップデートこの質問に関連しています pdl2 また Devel::REPL Perlデバッガーコマンドのような便利な機能があります m また y?または、でモジュールを作成する必要があります PadWalker そしてそれらをエクスポートしますか? Perlデバッガーの代わりにインタラクティブなシェルとして実際のREPLを使用したいのですが、Perlデバッガーには、やり方がわからない重要なことがあります。 Devel::REPL また pdl2.

たとえば、すべての変数を表示するには(pdl2 Piddlesのみを表示します):

pdl> help vars
PDL variables in package main::

Name         Type   Dimension       Flow  State          Mem
----------------------------------------------------------------
no PDL objects in package main::

ちなみに、誰かが知っていますか Devel::REPL 使用中のすべての変数をリストするためのプラグイン( y デバッガーでは、値ではなく名前のみです) x- 必要なものを捨てるように?

役に立ちましたか?

解決

Devel :: Replが提供するように見えます 簡単な代替 あなたの最初の質問のために。ホームディレクトリに「.perldlrc」というファイルを作成します。

use Data::Dumper;

sub x { 
  my $depth = shift;
  $Data::Dumper::Maxdepth = $depth;
  print Data::Dumper->Dump([@_])
}

残念ながら、次のようにコンマが必要です。

pdl> x 1, $c

この同じコントロールファイルアプローチで他のコマンドを実装できるようです。コンマの必要性を取り除く方法はありませんが、これらの種類のコマンドを認識して解析することはできない理由はないと思いますが。

他のヒント

Devel :: Repl Shell re.pl すでに最後の式の値をデフォルトでダンプしています:

[foo@host]$ re.pl
$ { a => 23, b => 34}
$HASH1 = {
           a => 23,
           b => 34
         };

$ 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top