Hello, I'm trying to write some test code for the subroutine ScanDeps however, I'm seeing some odd behaviour that I can't explain. A cut-down version of my test code looks like this:
sub generic_rv_test { my $rv = shift; foreach my $key (keys %$rv) { if (exists($rv->{$key}{used_by})) { # test used_by ... } else { # fail test } } } my $rv = scan_deps( files => ['t/data/pluggable/Foo.pm'], recurse => 1, ); generic_rv_test($rv);
However, my test was failing so I added the following lines after generic_rv_test($rv); to start debugging the issue:
use Data::Dump qw(dump); print dump $rv;
However, adding these lines somehow caused my test to start working! What seems to be happening is that $rv is more complete with the dump lines than without. Can someone explain what is happening? Basically, I want to be able to ensure $rv is contains all it's information before calling the test function on it but without having to dump $rv ...

$rv without the dump lines:

{ "Pluggable.pm" => { file => "C:/Perl/site/lib/Module/Pluggable.pm", key => "Module/Pluggable.pm", type => "module", }, }
$rv with the dump lines:
{ "Pluggable.pm" => { file => "C:/Perl/site/lib/Module/Pluggable.pm", key => "Module/Pluggable.pm", type => "module", used_by => ["Foo.pm"], }, }
Thanks, AdrianI

In reply to Problem: Lazy Hash Evaluation by adriani

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.