if (1) # extra if resets $1 backreference { $filename =~ /^([^_]+)_([^_]+)/; $rs[0] = $1; $rs[1] = $2; } # end of extra if (1) open (TESTF, "<./$filename") or die "open\n"; # now process lines which may or may not have matches while (my $line = ) { chomp $line; if ($line =~ /^\x7CTARGET/) { my ( $kw, $dtarget, $kw2, $dorient ) = split( /\x7C/, $line ); $dorient =~ /^([^_]+)_/; $rs[2] = $1; if (!defined($rs[2])) { $rs[2] = 'nocount'; } } elsif (...) { ... } } # test @rs values