Update: Sorry, this does not do what you want for sure, since you still need to declare $ has_field first.
You can use the hash fragment:
@{$has_field}{@fields} = (1)x@fields;
The right side uses the operator xto repeat one by the scalar value of @fields (i.e. the number of elements in your array). Another option in the same vein:
@{$has_field}{@fields} = map {1} @fields;