in reply to How to append data in a hash

If you're talking about arrays as hash values, just use push.
push @{ $Hash_filematches{ $filename } }, grep( /\/\Q$file_name\E#/i, +@{ + $Hash_filenames{ $filename } });

That'll even work if $Hash_filematches{ $filename } doesn't exist yet, when this line is run, thanks to autovivification.