Phoenix.pm: Please help, my brain is fried

Shay Harding mekla at geocities.com
Wed Jan 26 20:04:17 CST 2000


Hello all,

Sorry I missed the last X meetings (not even sure how many any more). I do keep
up with them here though.

OK, I have the code below, and can't figure out why it is misbehaving and I am
figuring it is something simple but due to working 80+ hours a week, I can't
see it. This is really not part of any program, just something I was messing
with. It basically creates a variable length string (6-12 alphanumeric
characters), except the string returned is not alphanumeric.


#!/usr/bin/perl5

  my $count = 0;
  print "\n\n", create_login_id(), "\n";



  sub create_login_id(){
      srand;
      my $temp = '';

      my $length = int(rand(6))+6;

      for (my $x = 1; $x <= $length; $x++){
          my $t = get_char();
          $temp .= chr($t)."($t)";
      }

      return $temp;
  }


  sub get_char(){
      srand;
      $count++;

      my $char = int(rand(57))+65;
      print $count, "  ", chr($char), "\n";

      get_char() if ($char >= 91 && $char <= 96);
      return $char;
  }



Sample output is:


This is the loops through the routine 'get_char'

1  C
2  p
3  p
4  ]
5  W
6  [
7  M
8  x
9  b


Here when it hits loop 4 it should do another loop since I exclude ASCII 93,
and it does this except below as you can see it keeps ASCII 93 and doesn't use
loop 5 value which would be valid. Using the 'my' scoping the number 4 value
should go out of scope on the recursive call or am I missing something here?


C(67)p(112)p(112)](93)[(91)x(120)b(98)



Thanks.



Shay










More information about the Phoenix-pm mailing list