in reply to use of diamond operator for multiple files

If your code is correct, you could reduce it by trying this (untested):
sub load_seqs{ local $ARGV = qw /q1.fa q2.fa/; while(my $line = <>){ if($line =~ m/^(?!\>).*\n$/){push (@{$_[0]},$line)}; } }
or even slightly more concise:
sub load_seqs{ local $ARGV = qw /q1.fa q2.fa/; while(<>) { push @{$_[0]}, $_ if m/^(?!\>).*\n$/; } }

Edit: Ooops, sorry for duplicate posting, I don't know what I did wrong.

Edit 2: I did not pay attention to the fact that you seem to want to split your data in separate arrays, I thought that you wanted all your data in the same array. I only noticed it after reading Not_a_Number's post below. Well, then, my solution above is not adequate. Sorry.