%20%C3%A9%20instalado%20por%20padr%C3%A3o%3F%20Por%20que%20eu%20iria%20querer%20converter%20Awk%20para%20Perl%3F%20.png)
Estou surpreso ao ver o a2p
utilitário instalado por padrão na minha distribuição Linux.
a2p
é um utilitário de linha de comando que converte umEstranhoprograma deentrada padrãopara umperlprograma que ele envia parasaída padrão.
Por que eu iria querer converter umEstranhoprograma para umPerlprograma quando eu tenho umEstranhointérprete instalado?
Por que é issoLinuxdistribuições incluem a2p
em suas instalações padrão?
Responder1
Talvez você queira usar essas ferramentas para aumentar a eficiência dos perl
scripts.
Você gostaria de fazer isso se tivesse um perl
programa maior e quisesse integrar a funcionalidade de um awk
script sem chamar um subprocesso. Você chamaria a2p
e integraria o código gerado em um script Perl existente.
Existe um utilitário semelhante, find2perl
que pega uma find
linha de comando e gera perl
código para fazer a mesma coisa, evitando a chamada a um find
subprocesso.
Estas são ferramentas de otimização para perl
scripts.
Responder2
Por que foi instalado por padrão? : Depende do desenvolvedor/mantenedor da distro que você está usando.
Por que você precisaria
a2p
Existe uma expressão estranha de colocar int() em torno de uma expressão de string para forçar a interpretação numérica, mesmo que o argumento seja sempre inteiro de qualquer maneira. Isso geralmente é desnecessário em perl, mas a2p não pode dizer se o argumento sempre será inteiro, então ele o deixa. Você pode querer removê-lo.
Perl diferencia a comparação numérica da comparação de strings. O Awk possui um operador para ambos que decide em tempo de execução qual comparação fazer. A2p não tenta fazer um trabalho completo de emulação do awk neste momento. Em vez disso, ele adivinha qual você deseja. Quase sempre está certo, mas pode ser falsificado. Todas essas suposições são marcadas com o comentário "#???". Você deve examiná-los e verificá-los. Você pode querer executar pelo menos uma vez com a opção -w para perl, que irá avisá-lo se você usar == onde deveria ter usado eq.
Para maiores informações :A2P