while( <> ){ split; splice @_, 0, 2; #removes first two elements store_elements_function( @_ ); #sub to store the remainder } #### my @std_keys = qw/proto .../; my @ext_keys = qw/name9 name10 name11/; .. #and in loop: my %hash; if( @_ < 9 ){ @hash{@std_keys} = @_; } else { @hash{(@std_keys, @ext_keys)} = @_; } print "My proto is: ",$hash{'proto'},"\n"; ...