This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Extract _handle_S_command.
authorShlomi Fish <shlomif@shlomifish.org>
Wed, 3 Oct 2012 13:04:43 +0000 (15:04 +0200)
committerRicardo Signes <rjbs@cpan.org>
Mon, 12 Nov 2012 14:18:34 +0000 (09:18 -0500)
lib/perl5db.pl

index 944bb10..9062262 100644 (file)
@@ -666,8 +666,6 @@ use vars qw(
     $signalLevel
     $start
     $sub
-    %sub
-    $subname
     $term
     $usercontext
     $warnLevel
@@ -683,6 +681,8 @@ our (
     $OUT,
     $signal,
     $single,
+    %sub,
+    $subname,
     $trace,
 );
 
@@ -2160,7 +2160,7 @@ If level is specified, set C<$trace_to_depth>.
 
 =cut
 
-                $obj->_handle_t_command();
+                $obj->_handle_t_command;
 
 =head4 C<S> - list subroutines matching/not matching a pattern
 
@@ -2168,29 +2168,7 @@ Walks through C<%sub>, checking to see whether or not to print the name.
 
 =cut
 
-                if (my ($print_all_subs, $should_reverse, $Spatt)
-                    = $cmd =~ /\AS(\s+(!)?(.+))?\z/) {
-                    # $Spatt is the pattern (if any) to use.
-                    # Reverse scan?
-                    my $Srev     = defined $should_reverse;
-                    # No args - print all subs.
-                    my $Snocheck = !defined $print_all_subs;
-
-                    # Need to make these sane here.
-                    local $\ = '';
-                    local $, = '';
-
-                    # Search through the debugger's magical hash of subs.
-                    # If $nocheck is true, just print the sub name.
-                    # Otherwise, check it against the pattern. We then use
-                    # the XOR trick to reverse the condition as required.
-                    foreach $subname ( sort( keys %sub ) ) {
-                        if ( $Snocheck or $Srev ^ ( $subname =~ /$Spatt/ ) ) {
-                            print $OUT $subname, "\n";
-                        }
-                    }
-                    next CMD;
-                }
+                $obj->_handle_S_command;
 
 =head4 C<X> - list variables in current package
 
@@ -3662,6 +3640,35 @@ sub _handle_t_command {
     return;
 }
 
+
+sub _handle_S_command {
+    if (my ($print_all_subs, $should_reverse, $Spatt)
+        = $DB::cmd =~ /\AS(\s+(!)?(.+))?\z/) {
+        # $Spatt is the pattern (if any) to use.
+        # Reverse scan?
+        my $Srev     = defined $should_reverse;
+        # No args - print all subs.
+        my $Snocheck = !defined $print_all_subs;
+
+        # Need to make these sane here.
+        local $\ = '';
+        local $, = '';
+
+        # Search through the debugger's magical hash of subs.
+        # If $nocheck is true, just print the sub name.
+        # Otherwise, check it against the pattern. We then use
+        # the XOR trick to reverse the condition as required.
+        foreach $subname ( sort( keys %sub ) ) {
+            if ( $Snocheck or $Srev ^ ( $subname =~ /$Spatt/ ) ) {
+                print $OUT $subname, "\n";
+            }
+        }
+        next CMD;
+    }
+
+    return;
+}
+
 package DB;
 
 # The following code may be executed now: