Posted to tcl by mjanssen at Wed Aug 26 16:26:57 GMT 2009view raw

  1. proc filter {list proc} {
  2. puts $list
  3. set result {}
  4. foreach element $list {if {![$proc $element]} {lappend result $element}}
  5. return $result
  6. }
  7.  
  8. proc alive server {
  9. return [ping $server]
  10. }
  11.  
  12. proc ping {a} {if {$a eq "localhost"} {return 1} else {return 0}
  13. }
  14.  
  15. set servers {localhost localhost localhost abcd}
  16.  
  17. while {[llength [set servers [filter $servers alive]]]>0 && [incr retry] < 4} {}