Visit Our UNIX and Linux User Community


here document to automate perl script that call script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting here document to automate perl script that call script
# 1  
Old 10-18-2007
here document to automate perl script that call script

I am trying to use a here document to automate testing a perl script however when the perl script hits a
Code:
system(perl subscript.pl)

call, input is no longer entered into this subscript.

here is my script
Code:
$ cat test.sh
#ksh
for testcase
do
	program <<-EOF | tee -a funcscnlog.log 
	y
	functional
	2
	$testcase
	reload
	keep
	EOF
	cd log
	cp x.log x.$testcase.log
	cd ..
done
$ sh test.sh TC01 TC02 TC03

I don't really want to use expect as I don't want to install anything else on the test system.


while testing this i also found a odd out put from perl
Code:
$ cat test.pl
print "infirst ";
my $buffer = <STDIN>;
chomp($buffer);
print $buffer;
print "me";
system("perl runtest.pl");
print "\naftercall ";
my $buffer = <STDIN>;
print $buffer;
print "\n";

$ cat runtest.pl
print "\ninsubtest ";
my $buffer = <STDIN>;
chomp($buffer);
print $buffer;

$ perl test.pl
infirst a

insubtest b
bame
aftercall c
c

$

if you look closly you will see
Code:
system("perl runtest.pl");

is run before

Code:
print $buffer;
print "me";

# 2  
Old 10-18-2007
Code:
	program <<-EOF | tee -a funcscnlog.log 
	y
	functional
	2
	$testcase
	reload
	keep
	EOF

(a) what is the "-" in front of EOF for?

(b) move all the text from "y" to "EOF" to the far left, at the very least the "EOF" must be in the far left column.
# 3  
Old 10-18-2007
the - in front of EOF tells the here doc to ignore any leading whitespace to allow it to be indented for easy looking code. There is no problem with the here document as I use this syntax on numrous other occassions successfully. The problem only occurs when the perl script "program" calls a subscript
# 4  
Old 10-22-2007
apparently it is due to the way perl buffer all 1024 bytes of stdin on the first call leaving it not readable for the rest subsequent calls.

I have replaced the
system("perl runtest.pl");

with
Code:
require "runtest.pl";

and all works

Previous Thread | Next Thread
Test Your Knowledge in Computers #443
Difficulty: Easy
FHM, a men's lifestyle magazine, asked 1,344 women if they preferred to hang out with a computer science expert or a footballer, and 1,023 (76.116%) stated they preferred geeks over athletes.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Call a Perl script within a bash script and store the ouput in a .txt file

I'm attempting to write a bash script that will create a network between virtual machines. It accepts three arguments: an RSpec that describes the network topology, and two list of machines (servers and clients). I have a (working) Perl script that I want to call. This Perl script takes an RSpec... (6 Replies)
Discussion started by: mecaka
6 Replies

2. Shell Programming and Scripting

Call .profile in perl script

Hello Gurus Can anyone please let me know how to call .profle file in perl script When I am calling the .profile file its giving error Shall I create unix script which has .profile command and call perl script internally (2 Replies)
Discussion started by: Pratik4891
2 Replies

3. Shell Programming and Scripting

Perl script for taking inputs from one script and storing them into a document.

Hi. I wanted to create a Perl script which can take the outputs of a Perl script as it's input and temporarily store them in a document. Need help. Thanks.:) (8 Replies)
Discussion started by: xtatic
8 Replies

4. Shell Programming and Scripting

shell script to call perl script problems

Ok, don't ask me why, but all calls to perl must be called by a shell script. Its really not ideal, but its what I have to work with. Calling it isnt the issue, its passing in the arguments. I have about 1000 perl scripts to call by a shell script. Right now, I'm executing the shell script... (3 Replies)
Discussion started by: regexnub
3 Replies

5. Shell Programming and Scripting

How to call expect script from Perl

I have a Perl script sub.pl, and i want to call another Expect script called sub.exp. The sub.exp will generate a text file called sub.txt, while the sub.pl called from a html form will display the content of sub.txt to the textarea on the html form. How do I call sub.exp from sub.pl??? ... (5 Replies)
Discussion started by: cxbest
5 Replies

6. Shell Programming and Scripting

how to call a bash script using perl

Hi I m new to perl. I m trying to write a perl script that calls a bash script; does anyone have a script already that they can provide or help me out? Thanks a lot. (2 Replies)
Discussion started by: adnan786
2 Replies

7. Shell Programming and Scripting

Perl cgi script to call bash script?

Novice to perl here. I have created a simple web page in perl, with only one submit button. I would like to execute a bash script on the same server when this button is clicked on. Is this possible in perl? I have spent a few days researching this and am unable to find any useful information.... (0 Replies)
Discussion started by: pleonard
0 Replies

8. Shell Programming and Scripting

call shell script from perl cgi script problem

hi,, i have perl scipt with line : system('./try.sh $t $d $m'); in shell scipt try.sh i have the line: echo $1 its not printing value of $t that i hav passed..y is it so..i am running it from apache web server (2 Replies)
Discussion started by: raksha.s
2 Replies

9. Shell Programming and Scripting

Call a perl script inside a shell script

Hi all, I have the following snippet of code.. #!/bin/sh echo "run perl script............" #Run the verification script perl bill_ver echo " perl script completed....." echo "rename files......" #Remove from all file in the directories test, test1, test2, test3 for f in... (3 Replies)
Discussion started by: chriss_58
3 Replies

10. Shell Programming and Scripting

How to call a perl script from a shell script

I have a perl script,Test.pl which needs arguments from command line like test.pl arg1 arg2 arg3 how can i call it from a shell script (2 Replies)
Discussion started by: anumkoshy
2 Replies

Featured Tech Videos