I see the solution is already presented.
One small remark for you in the feature on your last question.
Sometime you scripts getting executed (called) like this:
variable = nameofsomeunit execVM "script.sqf"
and sometimes you see
variable = [nameofsomeunit] execVM "script.sqf
This is due to the way the _this variable in the script is used.
In your case you use in the first line of (real) code :
_who = _this
which means you give the value of the phrase before 'execVM' to the variable _who. In this case, this will be some unit.
You could also pass a list of values to the script, a so called 'array'. An array is denoted by the square brackets with comma seperated values in between.
if your first line of code would be
_who = _this select 0
you should have passed an array to the script ([nameofsomeunit]), and the first element (with index 0), would be assigned to the variable _who.
More on the select statement can be found in the Biki
This way you can make scripts to which you can pass multiple units, or other elements like static objects, tanks, groups of units, etc...
A nice tutorial