Got it. Apparently, it didn't like the s option on $read. I went with w.

Code:
on *:CONNECT: {
  var %n = $network
  echo -a $read(joins.txt, w,* $+ %n $+ *)
  if ($read(joins.txt, w,* $+ %n $+ *)) {
    var %readline = $read(joins.txt, w,* $+ %n $+ *)
    var %chans = $gettok(%readline,2,9)
    var %command = $gettok(%readline,3,9)
    %command  
    var %x = 1
    echo -a $numtok(%chans,35)
    while (%x <= $numtok(%chans,35)) {
      var %chan = $char(35) $+ $gettok(%chans,%x,35)
      echo -a %chan
      join $chr(35) $+ %chan
      inc %x
    }
  }
}