How about you tell us what errors you get..
Just a few things though:
Cool, but:
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:
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).