It has already been mentioned, but since you're piping into the while, the entire while-loop is run in a subshell. I'm not exactly sure which shell you're using on 'Unix', which I suppose means Solaris, but bash should behave consistenly regardless of platform.
To solve this problem, you can do a lot of things, the most common is to examin the result of the while loop somehow, like so
result=`mycommand 2>/dev/null | while read item; do echo "FILE_FOUND"; done`
and look for data in $result
. Another common approach is to have the while loop produce valid variable assignments, and eval it directly.
eval `mycommand | while read item; do echo "FILE_FOUND=1"; done`
which will be evaluated by your 'current' shell to assign the given variables.
I'm assuming you don't want to just iterate over files, in which case you should be doing
for item in /tmp/$$.*; do
# whatever you want to do
done