7
votes

Puis-je exécuter un script perl de stdin?

Supposons que j'ai un script perl, à savoir myTest.pl. Puis-je l'exécuter par quelque chose comme chat myTest.pl | perl -e ?

La raison pour laquelle je veux faire est que j'ai un script de Perl crypté et je peux la déchiffrer dans mon programme C et je veux l'exécuter dans mon programme C. Je ne veux pas écrire le script déchiffré à HardDisk en raison de préoccupations de sécurité. J'ai donc besoin d'exécuter ce script Perl à la volée, tout en mémoire.

Cette question n'a rien à voir avec la commande chat , je veux simplement savoir comment nourrir le script Perl à STDIN et laisser Perl Interprète à l'exécuter.


3 commentaires

"Cat myTest.pl | Perl" devrait fonctionner, mais pourquoi?


Qu'essayez-vous de faire et pourquoi pensez-vous que c'est la solution?


J'ai un exemple dans la maîtrise de Perl qui montre à quel point il est facile de contourner ce que vous essayez de faire. Vous pensez que vous avez une sécurité, mais lorsque vous envoyez les données en dehors de votre programme, vous en perdez le contrôle.


5 Réponses :


6
votes
#!/usr/bin/env perl

3 commentaires

Si vous souhaitez exécuter STDIN et que vous souhaitez transmettre un argument, utilisez Perl - - Inputparam


L'utilisation inutile du lien Award Cat est cassée, voici l'archive: web.archive.org/web/20091121155349/http://partmaps.org/era/u Nix / ...


Modifié avec une version d'archive non-web



3
votes
perl mytest.pl 
should be the correct way. Why are you doing the unnecessary?

0 commentaires

2
votes
cat mytest.pl | perl
…is all you need. The -e switch expects the script as a command line argument.

3 commentaires

Voir «Inutile Cat Award», référencé dans la réponse de Brian.


La question concerne la lecture de Stdin. Je suppose que l'utilisation du chat était un exemple et que le Perl a été généré de manière plus intéressante.


Dorward, tu es correct. J'ai mis à jour ma question de clarté.



1
votes

perl code> lira le programme de stdin code> si vous ne le donnez aucun argument.

Pour que vous puissiez lire théoriquement un fichier crypté, le déchiffrer et Exécutez-le, sans enregistrer le fichier nulle part. p>


Voici un exemple de programme: p> xxx pré>

Pour tester ce programme, je suis d'abord couru ceci: P>

perl -MCrypt::CBC -e'
  my $a = qq[print "Hello World\n"];
  my $key = pack("H16", "0123456789ABCDEF");
  my $cipher = Crypt::CBC->new(-key=>$key,-cipher=>"Blowfish");
  my $encrypted = $cipher->encrypt($a);
  print $encrypted;
' > perl_program.encrypted


0 commentaires

4
votes

Parfois, il faut exécuter un script Perl et transmettre un argument. Le STDIN CONSTRUCTION PERL INPUT_FILE.TXT ne fonctionnera pas. Utilisation de la pointe de Comment attribuer une valeur Heredoc à une variable de Bash Nous l'avons surmontée en utilisant un "script ici": < Pré> xxx


1 commentaires

Pas besoin de faire ça. Utilisez Perl - - Inputparam