?
Solved

How to invoke a perl function from a shell sciprt and C code, and get a string back as the return value?

Posted on 2007-11-14
7
Medium Priority
?
834 Views
Last Modified: 2010-05-18
Hi,

I have a perl script in the following format.  It defines a package crypto, and has function decrypt.

package crypto;

sub decrypt
{
   ...
   my retval = "String";
   return retval;
}

Decrypt, returns the plain_text string of whatever it was told to decrypt.

Now, my problem is that how can I call this function from a Shell script and C code, getting the return value back in both cases?

Any suggestions?  Thanks in advance.
0
Comment
Question by:Kushal_Agarwal
7 Comments
 
LVL 48

Accepted Solution

by:
Tintin earned 750 total points
ID: 20285590
From a shell script:

string=`perl -Mcrypto -e 'print crypto::decrypt("abc")'`

But why don't you just have a calling Perl script that takes the args?
0
 
LVL 48

Expert Comment

by:Tintin
ID: 20285594
eg:

#!/usr/bin/perl
use crypto;
my $string = shift;
print crypto::decrypt($string);
0
 
LVL 85

Expert Comment

by:ozo
ID: 20285614
#!/bin/sh
cat <<'END' > script.pm
package crypto;

sub decrypt
{my $retval = "String";
   return $retval;
}
1;
END
value=`perl -Mscript -e 'print crypto::decrypt'`
echo $value
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:Kushal_Agarwal
ID: 20289245
Tintin,
I thought about that, but the problem is that its other people who have the shell scripts, and they are not too excited about changing them to perl scripts.

Now when I invoke the function from the shell script like you mentioned, how do the parameters get passed, meaning are they going to be visible in the process tree?
0
 

Author Comment

by:Kushal_Agarwal
ID: 20289251
Also, how can I do the same thing from C code?
0
 

Author Comment

by:Kushal_Agarwal
ID: 20289281
Ozo,

To call the perl function decrypt, don't I just need the line
value=`perl -Mscript -e 'print crypto::decrypt'`

What is everything above it for?
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 20291001
> .. re they going to be visible in the process tree?
yes (at least for the examples as shown above)
0

Featured Post

Become an Android App Developer

Ready to kick start your career in 2018? Learn how to build an Android app in January’s Course of the Month and open the door to new opportunities.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
Six Sigma Control Plans
Suggested Courses

621 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question