Isso é realmente feito com o GNU sed, graças à combinação de $
para atuar na última linha e -i
para modificar arquivos no lugar. Isso pressupõe que 1;
esteja na última linha, caso contrário, seria muito mais complicado.
sed -i -e '$s/^1;$/BEGIN {\
# VERSION\
}\
1;\
# ABSTRACT: table definition/' *.pm
Com o Perl, como os arquivos são pequenos, basta carregá-los totalmente na memória. Desta forma, é fácil ser mais flexível, por ex. permitir espaços e comentários e __DATA__
após 1;
(permitindo que o POD seja deixado como um exercício para o leitor).
perl -0777 -pe 's/\n\s*1\s*;(?=(?:\s*(?:#.*)?\n)*(?:\s*__(?:DATA|END)__\b)?\Z)/\nBEGIN…definition/' *.pm