Como faço para definir o modo mancha em um script Perl com um '#!/Usr/bin/Env Perl'- shebang?
Pergunta
Como faço para definir o modo mancha em um script perl com um
#!/usr/bin/env perl
Shebang?
Solução
Você pode passar na variável de ambiente Perl5Opt na linha Shebang:
#!/usr/bin/env PERL5OPT=-T perl
Isso parece tudo de trás para mim.
Outra opção é reexecionar o script no modo de mancha se você detectar que não estiver ligado:
#!/usr/bin/env perl
warn 'Taint mode is '.(${^TAINT} ? 'on' : 'off'); # For debugging
exec($^X,'-T',$0,@ARGV) unless ${^TAINT};
# do stuff under taint mode here
Obviamente, este é um grande desempenho de startups.
Outras dicas
Já que o modo de mancha só pode ser ativado através do -T
bandeira e env
Não aceitará bandeiras em uma linha de Shebang, sua melhor opção é executar o programa via perl -T script.pl
em vez de executar o script diretamente.
Se você absolutamente precisar aplicar o modo de mancha no shebang, você pode fazer um taintperl
Script em algum lugar do seu caminho (por exemplo, usr/local/bin) com o seguinte conteúdo:
#!/bin/sh
/usr/bin/env perl -T
Então em seu script Perl, tenha
#!/usr/bin/env taintperl