10

私はpdl2(PDLシェル) をデフォルトの Perl インタラクティブ シェルとしても使用しています ( Devel::REPL. しかし、xダンパー印刷エイリアスがありません。pピドルには適していますが、通常の配列参照またはハッシュ参照には機能しません。ロードしましたが、深さを制御する簡単な方法がありません。たとえば、複雑なデータ構造に対して、Data::Dumper深さの制限をすばやく設定できる方法が気に入っています。しかし、プロセスはより面倒です:xx 2 $deep_datastructData::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似たような簡潔なものはありますか?

[更新] そして、この質問に関連して: Perl デバッガー コマンドのような便利な機能がありますpdl2か? または、モジュールを作成してエクスポートする必要がありますか? Perl デバッガーの代わりに実際の REPL を対話型シェルとして使用したいのですが、それでも Perl デバッガーには、または.Devel::REPLmyPadWalkerDevel::REPLpdl2

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

pdl> help vars
PDL variables in package main::

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

ところで、誰かがDevel::REPL使用中のすべての変数を一覧表示するためのプラグイン (yデバッガーのように、値ではなく名前のみ) を知っていて、必要xなものをダンプする -like を持っていますか?

4

2 に答える 2

4

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 がこれらの種類のコマンドを認識して解析できない理由はないと思いますが、コンマの必要性をなくす方法はわかりません。

于 2011-02-16T05:57:42.800 に答える
0

Devel::REPL シェルre.plは、デフォルトで最後の式の値を既にダンプしています:

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

$ 
于 2010-12-14T15:23:00.787 に答える