Click here to Skip to main content
15,867,960 members
Articles / Programming Languages / Perl
Tip/Trick

How to pipe console apps

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
13 Jul 2012CPOL 14.4K   5  
Simulate user interaction in console apps with perl

Introduction 

This post describes how to interact with an interactive console application and similate user interaction.  In this case we are goint to interact with the app called mongo.exe wich is the console client for the NoSql database MongoDb.

Background 

Command line applications have been very useful because they allow us to perform actions easy and fast, the problem here is when you need to call a console application and such application require user interaction. Sometimes it becomes a headache for developers who want to call those apps to perform x or y actions, so here comes Perl to help us.

Using the code 

The following piece of code shows how to create a set of actions to execute when we call a console app.
PHP
#create a set of instructions
my @instructions = ();

push(@instructions, qq{use test;});
push(@instructions, qq{db.book.remove()});
push(@instructions, qq{db.book.save({name:"Code complete", author:"Steve Mcconnell"});});
push(@instructions, qq{db.book.save({name:"Perl: The Complete Reference", author:"Martin Brown"});});
push(@instructions, qq{db.book.find();});
push(@instructions, qq{exit});

#pipe the app in a handler
open MONGO, "| mongo.exe" || die "can't pipe mongo.exe";
#execute set of instructions
print MONGO join("\n",@instructions);

 To execute the previous code you just need to type perl filename.pl

Image 1

Points of Interest 

Simulate user interaction in console apps may be tricky with other languages, in Perl is easy.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Chief Technology Officer https://golabstech.com
Costa Rica Costa Rica
CTO and Co-founder of Golabs, a software development company located in Costa Rica. I am very passionate about my job and I really enjoy building things with software and make things happening. I am also a professor at Universidad Técnica Nacional because I believe that knowledge should be shared, I really enjoy seeing people grow from students at the university to great professionals and entrepreneurs.

Comments and Discussions

 
-- There are no messages in this forum --