Alle luned 13 agosto 2007, Haze Noc ha scritto:
> Hey guys, I have a method as such:
>
> 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?
>
> 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:

random($1.to_i) if $msg =~ /^rand (\d+)/

I hope this helps

Stefano