@saw{@in} is a hash-slice, which allows you to access many spots in the hash at once. Therefore @saw{@in} = (); assigns nothing to a list of spots in the hash. After that operation the hash will have a lot of keys that point to undef.
Those values aren't very useful, but all that we're interested in is making a list of keys exist in the hash, so it does what we need.
Comment on Re: need explanation of @foo{@bar} = (); (hash slice)