Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

(@ref) = build_refers($mem_info[2]); ## Build Referal List sub build_refers { my @users; $REF = shift; $sth = $dbh->prepare("SELECT username,status FROM members WHERE refer +ral='$REF'"); $sth->execute; while(($username,$status) = $sth->fetchrow_array) { $that = "$username=$status"; push(@users, $that); } $users = join("|", @users); push(@ref, $users); if($t < 2) { foreach $name (@users) { $t++; ($name, $status) = split(/=/, $name); if($name) { (@list) = build_refers2($name); } } } return(@ref); }
Im trying to make a list that will give me a list of referral from user I only want it to go 3 levels deep and I want it to give me this:
@ref = qw(name1=member|name2=member|name3=member name1=member|name2=me +mber|name3=member name1=member|name2=member|name3=member);
So $ref[0] would give me the first line with 3 referrals ill just spilt them up by the delimeter. My code won't produce it though, because this is what happens. It will run through the foreach loop and then make its list but one its done with name1 on firstlevel it goes to name2 and puts his 2nd level referrals on level4 ($ref3), do you kind of see what Im saying.

Replies are listed 'Best First'.
Re: Referral List
by BrowserUk (Patriarch) on Nov 23, 2002 at 05:26 UTC

    Where does $t get decalared and initialised?


    Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
    Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
    Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
    Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

      SUPPOST to be at the top before it enter the whole subroutine
      $t = 0;
      That was for the referral levels, when it gets to the "if($t < 2)" part

        Its also kinda hard to see what is going on with knowing what sub build_refers2($name); looks like.

        Whatever it does you appear to be discarding the results because you do  (@list) = build_refers2($name); but then you do return(@ref);? (You don't need to bracket the array btw.)

        This is very confusing code.

        I'm guessing that if you commented out push(@ref, $users); and returned @list, you might get something closer, but without sight of the sub mentioned above, I think guessing is all anyone can do.


        Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
        Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
        Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
        Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.