How about you tell us what errors you get..

Just a few things though:

Code:
ON *:TEXT:!clan*:

Cool, but:

Code:
  if ($left($1,1) == !) set %clan.way. notice $nick
  if ($left($1,1) == @) set %clan.way. msg $chan

This is redundant due to the fact that $1 is '!clan<something>' So it'll always be !.

Now, the regex you're using is just a bit odd:
Code:
noop $regex(%sockreader,/(.*?)\|(.*)/Si)

A '*' after an atom says "0 or more". Using the '?' there is pointless.

All this being said, if multiple people make the request at the same time, the '%clan.way.' and '%clan.nick.' will get mixed up. Use 'sockmark' to keep the variables associated with the socket it's self.

Apart from all that, I can't see any obvious errors.. (don't have mIRC with me, so can't further test).