J'ai un outil nommé TET.EXE, produit de la famille PDFlib, il est utilisé pour extraire les coordonnées d'un texte particulier. En utilisant ces coordonnées dans le script Perl, nous pouvons extraire le texte requis. C'est un processus manuel pour exécuter le fichier .EXE et ensuite donner les coordonnées à Perl, donc quelqu'un pourrait-il me suggérer de rendre tout ce processus inaudible. Ce que je veux dire, c'est que le script Perl lui-même doit exécuter le fichier .EXE et obtenir les coordonnées requises et extraire le texte. Quelles sont les commandes à utiliser dans linux pour exécuter ce script perl? S'il vous plaît, j'ai besoin de vos suggestions pour ce qui suit.
Merci d'avance.Comment rassembler la sortie d'une commande externe dans un script Perl?
Répondre
Si je comprends bien, vous voulez perl pour lancer un exécutable et faire quelque chose avec le texte imprimé à stdout .... dans ce cas, il y a quelques options:
my $output = `TED.EXE`;
Cela met la sortie de la commande TED.EXE dans la variable sortie $, et est très probablement suffisant pour ce que vous avez besoin.
use IPC::Open3;
my($wtr, $rdr, $err);
my $pid = open3($wtr, $rdr, $err,
'some cmd and args', 'optarg', ...);
Cela va votre commande et associés $ WTR, rdr $ et $ err à l'entrée standard, sortie et flux d'erreur.
Il existe d'autres façons de faire ce que vous voulez (Expect.pm, Run3, etc), mais je crois que ce qui précède devrait être suffisant.
Si les sorties TET.EXE à la console, vous pouvez capturer cette sortie avec
my $tetOutput = `tet.exe /myoptions`;
Si vous voulez lire à ce sujet, recherchez « backtick perl »
Je ne comprends pas la question, mais peut être:
my $result = qx{TET.EXE some.pdf some params};
Perl fournit de nombreuses méthodes pour exécuter un programme externe et rassembler sa sortie. Sur la base de la recherche à tet.exe Je dirais que le mieux est d'utiliser la fonction open et boucle sur la sortie en utilisant une expression régulière pour trouver les coordonnées:
open my $pdftext, "-|", "/path/to/tet.exe", "--text", $pdffile
or die "could not open $pdffile using tet.exe: $!";
my ($x, $y);
while (my $line = <$pdftext>) {
last if ($x, $y) = $line =~ /regex that matches the coords/;
}
die "file did not contain coordinates" unless defined $x;
Vous pouvez également envisager une autre approche: use a Perl library to extract the coordinates.
La documentation perlipc montre de nombreuses façons d'interagir avec des processus externes de Perl.
Plusieurs personnes vous demandent d'utiliser des guillemets, mais vous pouvez également consulter IPC::System::Simple qui fournit des méthodes plus robustes pour faire la même chose en gérant les problèmes spécifiques au système d'exploitation.
- 1. Comment obtenir la sortie d'une commande externe en Perl?
- 2. Comment obtenir la sortie de commande externe combiner avec Pipe
- 3. Comment exécuter un script Perl depuis un script Perl?
- 4. exécuter la sortie d'un script comme une commande bash autonome
- 5. Script Perl pour analyser la sortie de la commande cvs log
- 6. Statut de sortie de la commande ping
- 7. Comment rediriger la sortie stdout et stderr d'un script Perl vers un fichier sous Windows?
- 8. Comment stocker la sortie d'une commande dans un chemin?
- 9. Comment appeler un script Perl à partir d'Excel?
- 10. Comment appeler un script Perl dans une application C#?
- 11. Redirection de la sortie vers un argument de ligne de commande d'une autre commande dans Windows
- 12. Comment lancer et exécuter un script externe en arrière-plan?
- 13. Comment puis-je attraper la sortie d'une carpe en Perl?
- 14. Comment colorier le texte de sortie du script Perl sous Windows?
- 15. Comment puis-je capturer la sortie de pkgrm en Perl?
- 16. Comment rediriger la sortie du script Groovy?
- 17. Comment valider les dates dans un script CGI Perl?
- 18. sortie couleur de commande shell dans Ruby
- 19. sed remplace la commande dans un script bash?
- 20. Script Ruby pour lire la sortie de l'alias
- 21. Comment obtenir des scripts pour invoquer un script externe?
- 22. jquery document prêt dans le script externe
- 23. Démarrage d'un programme externe en Java et tuyauterie sa sortie
- 24. Remplacer la sortie dans une boucle dans le script bash
- 25. Comment installer les dépendances de script Perl?
- 26. Comment puis-je copier la sortie d'un script dans le presse-papiers de Windows?
- 27. Commande de sortie dans Oracle 10g
- 28. Comment faire pour vider la sortie dans les retours arrière En Perl?
- 29. Comment échapper un script PHP à un éditeur externe et revenir ensuite?
- 30. sortie verbeuse de script shell
IPC :: Open3 est probablement overkill, le programme crache les données sur STDOUT (pas STDERR) et prend le nom de fichier d'entrée comme argument (il n'est donc pas nécessaire de jouer avec STDIN). Un simple ouvert est suffisant et beaucoup plus facile à travailler. –