O documento discute o desenvolvimento rápido de programas de linha de comando usando ferramentas Perl como App::Rad. Apresenta como App::Rad fornece um framework simples e leve para criar programas de linha de comando escaláveis com suporte a comandos, argumentos, fluxo do programa e compartilhamento de dados entre comandos. Também discute funções embutidas como "include" e "exclude" para integrar one-liners e o modo "shell" interativo.
2. Ferramentas Linha de Comando
Tradicionais
● Exibição de ajuda (“help”)
● Parsing de argumentos
Orientada a comandos
● Dispatcher
● Help específico
● Shell
4. Perl como ferramenta?
“Easy things, easy.”
Com Perl, quase tudo é fácil ;-)
Sysadmins e pesquisadores sabem disso
(ou deveriam saber)
...e usam Perl diariamente como ferramenta para
solucionar problemas de forma rápida e eficiente
(ou deveriam usar)
5. Problemas com One-liners
(e pequenos programas)
“escreva e descarte”
(ou tenha pesadelos para manter)
Repetição constante
Baixa escalabilidade e flexibilidade
*cof*cof* documentação? *cof*cof*
6. Modelo Tradicional
Getopt::Long + Pod::Usage
Eficiente para programas lineares,
mas não escala bem.
18. Criando Comandos Mais Interessantes
use App::Rad;
App::Rad>run;
sub roll :Help(roll a dice in AdX format) {
my $c = shift;
my $value = 0;
if ( $c>argv>[0] =~ m{(d+)d(d+)} ) {
for (1..$1) {
$value += int(rand($2) + 1);
}
}
return $value;
}
19. Criando Comandos Mais Interessantes
> ./meuprog.pl
Usage: ./meuprog.pl command [arguments]
Available Commands:
help show syntax and available commands
roll roll a dice in AdX format
> ./meuprog.pl roll 3d4
7
>