• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 847
  • Last Modified:

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

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
Kushal_Agarwal
Asked:
Kushal_Agarwal
1 Solution
 
TintinCommented:
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
 
TintinCommented:
eg:

#!/usr/bin/perl
use crypto;
my $string = shift;
print crypto::decrypt($string);
0
 
ozoCommented:
#!/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
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

 
Kushal_AgarwalAuthor Commented:
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
 
Kushal_AgarwalAuthor Commented:
Also, how can I do the same thing from C code?
0
 
Kushal_AgarwalAuthor Commented:
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
 
ahoffmannCommented:
> .. re they going to be visible in the process tree?
yes (at least for the examples as shown above)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now