http://qs321.pair.com?node_id=11114247


in reply to Re^4: NYTProf line report failure
in thread NYTProf line report failure

I added "warn $self->filename" to "sub filename_without_inc" in Devel::NYTProf::FileInfo:
sub filename_without_inc {
    my $self = shift;
    my $f    = [$self->filename];
warn $self->filename;
These warnings lead me to believe the problem is not in my code:
Reading nytprof.out
Processing nytprof.out data

collapse_sibling_evals: nested evals in (eval 656)[/ExtUtils/MM_Unix.pm:2920] 
not handled at /Devel/NYTProf/FileInfo.pm line 291.

collapse_sibling_evals: nested evals in (eval 2695)[/Module/Metadata.pm:13] 
not handled at /Devel/NYTProf/FileInfo.pm line 291.
Here are the results with my added warn:
98% ... (eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /Devel/ +NYTProf/FileInfo.pm line 431. (eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /Devel/NYTProf/ +FileInfo.pm line 431. Warning: something's wrong at /Devel/NYTProf/FileInfo.pm line 431. 99% ... (eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at /Devel/N +YTProf/FileInfo.pm line 431. (eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at /Devel/NYTProf/F +ileInfo.pm line 431. Warning: something's wrong at /Devel/NYTProf/FileInfo.pm line 431.
Here's line 13 of Module::Metadata:
sub __clean_eval { eval $_[0] }
Here's line 2921 of ExtUtils::MM_Unix (right after strict is disabled on line 2917, and warnings are disabled on line 2919):
eval($line); ## no critic

Replies are listed 'Best First'.
Re^6: NYTProf line report failure
by swl (Parson) on Mar 15, 2020 at 04:12 UTC

    Which of the output lines you provided are the result of the warn $self->filename call? Also, what does a "normal" filename look like when printed? Seeing the difference will help.

    Another question is why your code is using what appears to be a module installation process? Perhaps it tries to install on-the-fly? In which case perhaps it is best to get everything installed before running the code?

      Which of the output lines you provided are the result of the warn $self->filename call?

      warn 'WARN:'.$self->filename; 97% ... WARN:(eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /D +evel/NYTProf/FileInfo.pm line 431. WARN:(eval 657)[(eval 656)[/ExtUtils/MM_Unix.pm:2920]:1] at /Devel/NYT +Prof/FileInfo.pm line 431. WARN: at /Devel/NYTProf/FileInfo.pm line 431. # NO FILENAME! Use of uninitialized value in numeric gt (>) at /Devel/NYTProf/Reader. +pm line 184. 98% ... WARN:(eval 1724)[/Module/Metadata.pm:13] at /Devel/NYTProf/Fil +eInfo.pm line 431. WARN:(eval 1724)[/Module/Metadata.pm:13] at /Devel/NYTProf/FileInfo.pm + line 431. 98% ... WARN:(eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at / +Devel/NYTProf/FileInfo.pm line 431. WARN:(eval 2699)[(eval 2698)[/Module/Metadata.pm:13]:6] at /Devel/NYTP +rof/FileInfo.pm line 431. WARN: at /Devel/NYTProf/FileInfo.pm line 431. # NO FILENAME! Use of uninitialized value in numeric gt (>) at /Devel/NYTProf/Reader. +pm line 184.
      Also, what does a "normal" filename look like when printed?

      Either the it's the full path to a perl module, or one of those eval lines with parens and brackets.

      Another question is why your code is using what appears to be a module installation process?

      I'm using ExtUtils::Installed. ExtUtils::Installed::new calls ExtUtils::Installed::_make_entry which calls ExtUtils::MM_Unix::parse_version. Maybe I found another bug by analyzing Perl? (This time in NYTProf)

        I had the same question about which one were your warns. If you want to create a simple and correct output with your warning additions then just start with a simple and correct Perl script and test with it your new hypotheses. Questions without any source code are a bit rhetorical.