in reply to use re 'debug';, scope, and output

but why is there output from re 'debug' showing up on my console even with the redirects? Why is the beginning part of the output being written to the console, and the rest stored in my redirected err.txt file?

Probably compile-time (BEGIN) versus run-time difference

What output is the debug command outputting to that I don't know about?

What? What is it that you know? What output is confusing?

confirmed:

#!/usr/bin/perl -- use strict; use warnings; use Capture::Tiny qw/ capture /; use Data::Dump qw/ dd /; my $string = 'd"alice'; my( $stdout, $stderr, $exit ) = capture { eval q{ use re 'debug'; $string =~ s/\bd\"//g; };}; $string =~ /alice/; dd( $stdout, $stderr, $exit , $string );

Without the "eval" Compiling REx and Freeing REx (BEGIN{} and END{} respectively) don't get captured in $stderr

Replies are listed 'Best First'.
Re^2: use re 'debug';, scope, and output
by stevieb (Canon) on Jul 14, 2015 at 02:07 UTC
    It didn't occur to me at the time that compile time vs runtime was part of the issue, but now that I'm aware it completely makes sense. When I compile the regex ouside of the use statement, it isn't caught. Thanks for clarifying.

    Shouldn't everything under the feature do the same thing though?

    Your little code snip will come in handy in the future, thanks!

      Shouldn't everything under the feature do the same thing though?

      Eh? It does

      You can pick and choose which debugging output you want, but it might be nice if you could specify a filehandle for the output...

      #!/usr/bin/perl -- use strict; use warnings; use Capture::Tiny qw/ capture /; use Data::Dump qw/ dd /; my $string = 'd"alice'; my( $stdout, $stderr, $exit ) = capture { use re 'Debug', 'ALL'; no re 'Debug', 'COMPILE'; $string =~ s/\bd\"//g; }; $string =~ /alice/; dd( $stdout, $stderr, $exit , $string ); __END__ ( "", "Guessing start of match in sv for REx \"\\bd\\%\"\" against \"d%\"a +lice\"\nFound anchored substr \"d%\"\" at offset 0 ...\nstart_shift: 0 check_at: 0 s: 0 endpos: 1\nDoes not contradict ST +CLASS...\nGuessed: match at offset 0\nMatching REx \"\\bd\\%\"\" against \"d%\"alice\"\n Setting an EVAL scope, savesta +ck=48\n 0 <> <d\"alice> | 1:BOUND(2) \n 0 <> <d\"alice> | 2:EXACT <d\">(4)\n 2 <d\"> <alice +> | 4:END(0)\nMatch successful!\nMatch ing REx \"\\bd\\%\"\" against \"alice\"\nGuessing start of match in sv + for REx \"\\bd\\%\"\" against \"alice\"\nDid not find anchored substr \"d%\"\"...\nMatch rejected by optimizer\nNot pre +sent...\nMatch failed\n", 1, "alice", )