## ## convert an hlist path ## sub hlist_selection_to_expr { my($entry, $hlist) = @_ ; my($path) = $hlist->infoSelection() ; my($array_context, $hash_context, $expr, $e) ; my($root_expr, @elems) = split /$Devel::ptkdb::pathSep/, $path ; return unless $root_expr ; ($array_context, $hash_context) = $root_expr =~ /^(\s*@)|^(\s*%)/ ; $root_expr = '(' . $root_expr . ')' if( $root_expr =~ / /) ; $expr = $root_expr ; if( @elems && ($array_context || $hash_context) ) { $expr =~ s/\s*[@%]/\$/ ; if( $array_context ) { $expr .= shift @elems ; # it will be a [idx] expr } elsif ( $hash_context ) { $expr .= "{\'" . shift(@elems) . "\'}" ; } } for( @elems ) { $expr .= '->' ; if( /\[[0-9]+\]/ ) { $expr .= $_ ; } else { $expr .= "{\'" . $_ . "\'}" ; } } $entry->delete(0, 'end') ; $entry->insert(0, $expr) ; $entry->selectionRange(0, 'end') ; $entry->focus ; } sub install_hlist_selection_to_expr { my($dbwin) = $DB::window ; # ptkdb window my($hlist) = $dbwin->{'data_list'} ; $Devel::ptkdb::pathSep = "\xff" ; # correction for ptkdb hlist bug in +some versions $hlist->configure( 'separator' => $Devel::ptkdb::pathSep) ; $hlist->bind('<Button-1>', sub { hlist_selection_to_expr(@$dbwin{qw/en +try data_list/}) }) ; } &install_hlist_selection_to_expr ;

In reply to ptkdb Expression Tree Extension by ptkdb

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.