Então, dois problemas:
- Correspondências indesejadas: Isso porque você não terminou cada cláusula do padrão para ter $ no final para indicar que deseja corresponder a abced seguido por < b> nada . seq_10140 faz corresponder seq_1014 porque seq_1014 está lá (em algum lugar). Você não disse que outro personagem no final causaria uma falha dizendo seq_1014 $ .
- Falha ao corresponder quando deveria: Esta parte funciona no meu sistema quando copio seu código e seus arquivos de entrada. 1039 e assim por diante do correspondem. Tudo o que posso pensar é que o seu $ pat é apenas uma cláusula de duração devido a algum problema com o seu arquivo de padrão que está sendo corrigido cortando-o e colando-o dentro e fora deste fórum. Geralmente, isso significa que há dois caracteres End of Line no final de cada linha a la no DOS e o arquivo inteiro é lido na primeira leitura. Há, no entanto, uma série de outras coisas que poderiam estar erradas com elas. Leve-o para a depuração ou apenas adicione instruções de impressão para ver o que está em @headers e $ pat . Obtenha uma saída byte-by-byte do arquivo através de um programa 'C' ou Emacs em 'hexl-mode' para ver se algo está confundindo suas leituras.