in reply to syntax questions

What does ${wfid} mean in here ? Is it same as $wfid ? If yes then why use this syntax ?
In your code, yes, ${wfid} is the same as $wfid. You would need the curlies if you had this instead (I deleted the dot):
$filelist = "$iwhome/tmp/filelist-${wfid}txt";

Without the curlies, you'd have a different variable: $wfidtxt:

$filelist = "$iwhome/tmp/filelist-$wfidtxt";

Refer to Scalar value constructors

Is file handler FILELIST adding members to $filelist ?
FILELIST is a file handle. Your open statement opens the file named $filelist for output. The print adds lines to the file.

Generally, you need not use &. Refer to Prototypes for gory details.