FUNC:RANDOM - RANDOM CHARACTER FUNCTION

[code=tcl]#usage [func:random A Z] returns random char from A-Z (also works with other ranges)
func:random {min max} {
if {[string length $min]==1&&[string length $max]==1} {
set min [scan $min %c]
set max [scan $max %c]
return [format %c [expr $min + [rand [expr ($max - $min) + 1]]]]
}
}[/code]

FUNC:GENPASS - GENERATE RANDOM PASSWORDS

[code=tcl]#requires func:random
#usage [func:genpass 10] - returns random string of 10 characters
proc func:genpass {length} {
if {[string is digit $length]} {
set return ""
for {set i 1} {$i<=$length} {incr i} {
set rand [rand 3]
if {$rand==0} {
set return "$return[func:random 0 9]"
} elseif {$rand==1} {
set return "$return[func:random a z]"
} {
set return "$return[func:random A Z]"
}
}
return $return
}
}[/code]

FUNC:READ - JUST AS IN MIRC

[code=tcl]#usage [fun:read "/file.txt" "ntswr" "matchtext" "n"]
#for details read /help $read in mIRC
proc func:read {file {ntswr ""} {matchtext ""} {n ""}} {
set fp [open $file r]
set data [read $fp [file size $file]]
close $fp
set data [split $data "\n"]
if {$ntswr!=""} {
if {[string is digit $ntswr]} {
if {$ntswr==0} {
return [llength $data]
} elseif {$ntswr>0} {
return [lindex $data [expr $ntswr - 1]]
}
} elseif {($ntswr=="s")||($ntswr=="w")||($ntswr=="r")} {
if {$matchtext!=""} {
if {$n==""} {set n 1}
for {set i $n} {$i<[llength $data]} {incr i} {
if {$ntswr=="s"} {
if {[string match -nocase $matchtext* [lindex $data [expr $i - 1]]]} {
return $i
}
} elseif {$ntswr=="w"} {
if {[string match -nocase $matchtext [lindex $data [expr $i - 1]]]} {
return $i
}
} {
if {[regexp -lineanchor -- $matchtext [lindex $data [expr $i - 1]]]} {
return $i
}
}
}
return
}
}
} {return [lindex $data [rand [llength $data]]]}
return $data
}[/code]