I have a problem...

Code:
alias get.rate {
  ; once again, I hate [ ]

  var %a $1-
  var %file data\mp3.rate.txt
  if ($chr(44) isin %a) { var %file $remove(%a,$chr(44)) }

  if ($invalid.fname(%a) == 2) { return invalid }

  var -s %b $read( [ %file ] , s, [ %a ] )
  var -s %c $read( %file , s, %a )
  if (!%b) { return null } | else { return %b }
} 


If I do a //get.rate $read(data\mp3.rate.txt), it will output this:

Code:
*** Set %b to 8
-
* $read: insufficient parameters (line 421, mp3-2.mrc)


every single time! Line 421 is when it tries to set variable %c. Question; Is there something wrong in my code? In line 420, it works well. When hard brackets surrounds the variables. To me, it seems that mIRC doesn't understand that it is variables there, and doesn't have enough parameters to do the task ($read). It also seems to be a problem when temporary variables are made (/var %var).

Now, does my problem classify as "when you wish to change the order of evaluation or if you want something to be evaluated more than once." ??

This was the quickest example in my script that I could find.

//echo -a $asc(,) <- Happy to know that mIRC is consistent...