in reply to Re: Recover a variable from a loop
in thread Recover a variable from a loop

Thanks for the tool. I thought about that but i already declare my variable in my loop. I just want to recover them in this code part
unless ($white{browser_name => $browser[0]}->compare($blue{browser_na +me => $browser[1]})) { $diff_file = $white->difference($blue); print '#The images differ; see ' . $diff_file . ' for details'. "\ +n"; my $open_cmd; if ($^O eq 'darwin') { $open_cmd = 'open' } elsif ($^O eq 'MSWin32') { $open_cmd = ''; } else { $open_cmd = 'display'; } `$open_cmd $diff_file`; }
Lost in translation

Replies are listed 'Best First'.
Re^3: Recover a variable from a loop
by hippo (Archbishop) on May 26, 2016 at 09:24 UTC
    but i already declare my variable in my loop

    No, you don't. You have not declared $diff_file in any part of the code which you have shown.

      For this variable yes. I've just done it. But for $white, it's done .
      Lost in translation

        Declare $white outside the loop if you want to access it from outside the loop - eg. declare it where you declare $self. See Coping with Scoping.

Re^3: Recover a variable from a loop
by AnomalousMonk (Archbishop) on May 26, 2016 at 15:07 UTC
    unless ($white{browser_name => $browser[0]}->compare($blue{browser_name => $browser[1]})) {
       $diff_file = $white->difference($blue);
       print '#The images differ; see ' . $diff_file . ' for details'. "\n";
       ...
       }

    I don't understand what you're trying to do with an expression like $white{browser_name => $browser[0]}, but I doubt it's the right way to go.

    You're trying to use the old fashioned (pre-Perl 5) multidimensional array hack | emulation on the hash  %white which you have never declared. (Update: You're not accessing the  $white object reference.)

    c:\@Work\Perl\monks>perl -wMstrict -le "use Data::Dump qw(dd); ;; my %white; ;; my @bar = qw(bozzle); ;; $white{ foo => $bar[0] } = 'wibble'; dd \%white; " { "foo\34bozzle" => "wibble" }
    The  "foo\34bozzle" key in the dd dump is part of this old hack. See  $; in perlvar for some info on this. I'd like to give you a more complete reference, but I can't seem to find one ATM. (Anyone...?) (Update: Ok, there's this brief discussion on-line in perldata: Multi-dimensional array emulation.)


    Give a man a fish:  <%-{-{-{-<