def random(len)
if len !~ /\d+/
pub_send “Invalid number”
elsif len > 30
pub_send “No more then 30 chars”
else
chars = (“a”…“z”).to_a + (“A”…“Z”).to_a + (“0”…“9”).to_a
random = “”
1.upto(len) { |i| newpass << chars[rand(chars.length)] }
pub_send random
end
end
and i call the method like so…
random($1) if $msg =~ /^rand (\d+)/
the value of $1 will always be a number, but it seems when i am passing
it to the function it returns an error saying it cannot compare len to
30 because the value of len is a string… Any ideas?
30 because the value of len is a string… Any ideas?
Thanks in advance
No, $1 will always be a string: the $1… variables are set to the part
of
string matching the corresponding group. No conversion is done on it,
you
have to do that yourself. So, you should replace the last line with:
def random(len)
if len !~ /\d+/
pub_send “Invalid number”
Are you aware that if len is a number this will always be true (and it
would
be true no matter what regex you use).
elsif len > 30
pub_send “No more then 30 chars”
You will only get here when len is a string (containing one or more
digits),
so this will raise an error because you can’t compare a string to a
number.
random($1) if $msg =~ /^rand (\d+)/
the value of $1 will always be a number,
No. The value of $1 is always a string. “45” is not a number, it’s a
string
containing the character ‘4’ and ‘5’. 45 is a number.
If you want a number call to_i on the string.
def random(len)
if len !~ /\d+/
pub_send “Invalid number”
Are you aware that if len is a number this will always be true (and it
would
be true no matter what regex you use).
Yeah i realized that after i got it working, Wasn’t thinking straight,
it wouldn’t work unless there was a number so there was no need for the
regex at all, thanks again