I haven't sorted out exactly what is going in these two examples. Block
and Module are different: Module creates a new symbol, while Block uses
the given symbol. Nevertheless, there is an even shorter version of your
program that works:
In[25]:=
outputTest[lst_List, id_Integer] := Put[lst, ToString[id] <> ".txt"]
In[26]:=
outputTest[{1, 2, 3}, 3]
In[27]:=
!! 3.txt
{1, 2, 3}
--Mark.