in reply to Shared variable not changing?

Are you using hreads::shared? What variable are you expecting to be shared (@tmp/@queue have short lifespans)?

Replies are listed 'Best First'.
Re^2: Shared variable not changing?
by Shades (Initiate) on Mar 17, 2009 at 10:26 UTC
    Yes, I'm using threads::shared. I want to add to the queue that resides in $mcvpservers->{$server}->2. Do I have to push to that reference somehow?
      ...the queue that resides in $mcvpservers->{$server}->[2]. Do I have to push to that reference somehow?

      If that's an array reference, you probably don't want

      my @queue = $mcvpservers->{$server}->[2];

      but rather

      my $queue = $mcvpservers->{$server}->[2]; ... push @$queue, ...

      Update: as you have it, your array ref (queue) will be assigned to the first element of @queue, but whatever you push onto @queue will be added outside of what is pointed to by the array ref. Consider

      use Data::Dumper; our @queue = (qw(stuff in queue)); my $server = "name"; $mcvpservers->{$server}->[2] = \@queue; # ... my @queue = $mcvpservers->{$server}->[2]; push @queue, "morestuff"; print Dumper \@queue; __END__ $VAR1 = [ [ 'stuff', 'in', 'queue' ], 'morestuff' ];
        I'm not sure that's the problem, but if it is, how do I write $#queue+1 and $#{$queue[0]}+1 with array refs instead? I want to check if the queue is empty and the length of it.