How to call expect script from Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to call expect script from Perl
# 1  
Old 02-04-2010
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???

<<sub.pl>>

Code:
#!/usr/bin/perl

system('sub.exp');

print "Content-type:text/html\n\n";
print "<html>\n";
print "<head><title></title></head>\n";
print "<body>\n";
print "<textarea name='sub' cols=30 rows=4>\n";
open(INFO, "sub.txt");
@array=<INFO>;
close (INFO);
chomp(@array);
 
foreach $line (@array){
#($last,$first)=split(/\|/,$line);
print "$line\n";
}
print "</textarea>\n";
print "</body>\n";
print "</html>\n";



---------- Post updated at 12:34 PM ---------- Previous update was at 11:41 AM ----------

Anybody help?

---------- Post updated at 12:34 PM ---------- Previous update was at 12:34 PM ----------

Anybody help?

Last edited by pludi; 02-04-2010 at 01:25 PM.. Reason: code tags, please...
# 2  
Old 02-04-2010
First, make sure that the Expect script is executable. And if you call it, call it with the absolute path. Same goes for reading the text file.

Or, use Expect;, and skip using an external command.
# 3  
Old 02-04-2010
Hi Pludi,

Thanks for your reply. I have put the absolute path of where the sub.exp is located, but it seems to me that the sub.exp is not called by the sub.pl script. If I run the sub.exp script, I can see a sub.txt is generated and it is what I want. Is the line in my perl script the correct way of calling a expect script?

If I run the sub.pl, I can see all other tags of html form gets printed, but cannot see the sub.txt content. My ultimate goal is to display the content of sub.txt to the TEXTAREA in the html form.

Thanks.
# 4  
Old 02-04-2010
If you see a text file being generated, I'd say that's a pretty good indicator that your system() line is working. Now try using the absolute path for the text file when reading it.

Also, it would be good style to also include
Code:
use strict;
use warnings;

in your code and check for any errors.
# 5  
Old 02-04-2010
Hi Pludi,

Sorry I didn't make it clear. I mean when I run sub.exp by "expect sub.exp", it can generate the sub.txt, so the expect script should be fine.

But when I run sub.pl with "perl sub.pl", it will generate,

Code:
 
-bash-3.00# perl sub.pl
Content-type:text/html
<html>
<head><title></title></head>
<body>
<textarea name='sub' cols=30 rows=4>
</textarea>
</body>
</html>
-bash-3.00#

If I put the two lines that you indicated above, I will get this,

Code:
 
-bash-3.00# perl sub.pl
Global symbol "@array" requires explicit package name at sub.pl line 20.
Global symbol "@array" requires explicit package name at sub.pl line 22.
Global symbol "$line" requires explicit package name at sub.pl line 26.
Global symbol "@array" requires explicit package name at sub.pl line 26.
Global symbol "$line" requires explicit package name at sub.pl line 28.
Execution of sub.pl aborted due to compilation errors.

My current code is like this,

Code:
 
#!/usr/bin/perl
use strict;
use warnings;
 
system('/opt/xampp/htdocs/hsgw/sub.exp');
 
print "Content-type:text/html\n\n";
print "<html>\n";
print "<head><title></title></head>\n";
print "<body>\n";
print "<textarea name='sub' cols=30 rows=4>\n";
open(INFO, "/opt/xampp/htdocs/hsgw/sub.txt");
@array=<INFO>;
close (INFO);
chomp(@array);
 
foreach $line (@array){
print "$line\n";
}
print "</textarea>\n";
print "</body>\n";
print "</html>\n";

# 6  
Old 02-04-2010
That's why I asked whether or not the file is executable. If it is (the 'x' bit is set), it can be called without calling expect explicitly. Otherwise, you'll have to call it the same way in the script as you do on the command line.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Calling expect from shell script which inturn call python

Hi Team, I have to execute a task from my local machine, where i keep my .expect,.sh, .bash and .python scripts .Task are coded in the script and has to be executed at remote machine. for that i used following task ..... SCRIPT 1: cat shell_check.sh read value if then expect... (3 Replies)
Discussion started by: Sivarajan N
3 Replies

2. 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

3. 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

4. Shell Programming and Scripting

on HTML form, Call Expect in Perl problem

Hi I have a successfullly run perl script (by issuing command "perl sub.pl" under shell mode) and this sub.pl will call sub.exp successfully. The sub.exp expect script is basically to login to a server and run some commands and put the output into a sub.txt file, it takes about 5 seconds to... (0 Replies)
Discussion started by: cxbest
0 Replies

5. 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

6. 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

7. Shell Programming and Scripting

Calling Expect script in Perl...

I call a EXPECT script from my perl script with machine IP and a FIle. The script logins to the machine and exports the value. The values to be exported or stored in a file. I have close to 10 machines and I have created 10 files and pass the corresponding files in command line, Now I could like... (4 Replies)
Discussion started by: ramkriz
4 Replies

8. UNIX for Advanced & Expert Users

Wget call in a Perl script

I've got to do a wget call in a Perl Script. I am basically doing migration of a shell script which was previously doing it. The code in the sh file was as follows. wget -nv -o /tmp/wget.run.log -t 5 -w 10 http://windows-server/myapp/1try.asp?myparam=no This wget command is executing an... (1 Reply)
Discussion started by: rahulrathod
1 Replies

9. Shell Programming and Scripting

how to call a perl script from tcsh?

Hi I am not sure how to call a perl script from a tcsh shell. do i need to set any environment variables? your help is appreciated Thanks (1 Reply)
Discussion started by: megastar
1 Replies

10. UNIX for Dummies Questions & Answers

how can call perl script as command?

Hello say i have written some perl scripts , now i like to call them in my unix shell as unix command like "more" , "ls" , "grep" so that my say perl script called "foo.pl" will be called from every where as "foo" or "foo arg1 arg2"? Thanks (1 Reply)
Discussion started by: umen
1 Replies
Login or Register to Ask a Question