Passing Value from Shell to Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing Value from Shell to Perl
# 1  
Old 11-05-2007
Passing Value from Shell to Perl

Hi All,

I am calling a perl program in my shell script as follows.

MY_IN_FILE=ABC.dat
MY_OUT_FILE=XYZ.dat
MY_VARIABLE="SomeValue"

perl mycode.pl $MY_IN_FILE > $MY_OUT_FILE

Question:-
Now I want to pass value of $MY_VARIABLE from script to perl... How do I do that? Can someone please help, I'm new to perl and scripting !!

Thanks.
HCB
# 2  
Old 11-05-2007
The four primary ways of inputting some to a program (no matter the language the program is written in)

(a) command line argument, like your file argument

(b) environment variables, typically need to export from a shell script

(c) as stdin, basically the input stream to a program

(d) as a generic file, where the program looks for well-known files.
# 3  
Old 11-05-2007
accessing environment variables from perl

Environment variables in perl are accessed via the $ENV list (hashed array):

Code:
# typeset -x MY_VARIABLE="SomeValue"
# perl -e 'print $ENV{"MY_VARIABLE"}'
SomeValue

Of course, you could write the whole script in perl, but...baby steps. Smilie

Note that the variable(s) must be exported. I used "typeset -x" instead of "export" since I regularly typeset all the variables used in scripts. It's a good habit to adopt, since variables can be inherited if they are not typeset.

Wanna see all your scripts blow up? Try "typeset -r i" at the prompt before running them and watch what happens! This makes "$i" read only...unless the script typesets it.
# 4  
Old 11-05-2007
Quote:
Originally Posted by porter
The four primary ways of inputting some to a program (no matter the language the program is written in)

(a) command line argument, like your file argument

(b) environment variables, typically need to export from a shell script

(c) as stdin, basically the input stream to a program

(d) as a generic file, where the program looks for well-known files.
I have tried
export $MY_VARIABLE

and then reading $MY_VARIABLE in perl program. I didnt get any value!

I tried as command line argument, however since I already have one file as input paramenter, it is interpreting another also as file input and I get a message that $MY_VARIABLE file does not exists.

Can you please show me syntax of passing file as one parameter and value as another parameter? or any other way?
# 5  
Old 11-05-2007
Quote:
Originally Posted by gus2000
Environment variables in perl are accessed via the $ENV list (hashed array):

Code:
# typeset -x MY_VARIABLE="SomeValue"
# perl -e 'print $ENV{"MY_VARIABLE"}'
SomeValue

Of course, you could write the whole script in perl, but...baby steps. Smilie

Note that the variable(s) must be exported. I used "typeset -x" instead of "export" since I regularly typeset all the variables used in scripts. It's a good habit to adopt, since variables can be inherited if they are not typeset.

Wanna see all your scripts blow up? Try "typeset -r i" at the prompt before running them and watch what happens! This makes "$i" read only...unless the script typesets it.
Thanks! It worked.

I'll read further on typeset, as you mention it to be good coding habit ... and also especially after reading usage of typeset -r i

Thanks again to all who replied !
# 6  
Old 11-05-2007
Quote:
Originally Posted by hcbhatt
I have tried
export $MY_VARIABLE

and then reading $MY_VARIABLE in perl program. I didnt get any value!
should be
Code:
export MY_VARIABLE

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting shell to Perl I run into shell built in function trap and need alternative in Perl

I am working on converting shell to Perl script. In shell we have built in function trap Do you know alternative in Perl or actually we don't need it? Thanks for contribution (3 Replies)
Discussion started by: digioleg54
3 Replies

2. Shell Programming and Scripting

Problems passing shell arguments to perl

Semi-newbie, so flame throwers to 'singe-only', please. ;-) I have a large number of (say) .html files, where I'd like to do a recursive in-place search and replace a particular string. The following bit of perl works fine: perl -pi -e 's/oldstring/newstring/g' `find ./ -name *.html` ... (2 Replies)
Discussion started by: johnny_canucl
2 Replies

3. Shell Programming and Scripting

Passing PERL var values to SH Shell Script

Greetings all, If I have a SH script that calls a PERL script in the following way: perl $HOME/scripts/config.properties And in the config.properties PERL file, this Perl script only sets a number of environmental parameters in the following way: #!/usr/bin/perl $VAR1 = ( ... (3 Replies)
Discussion started by: gikyo12
3 Replies

4. Shell Programming and Scripting

Passing perl variable to shell command

Can we pass perl variable to shell commands. If yes, please give some example. (2 Replies)
Discussion started by: Anjan1
2 Replies

5. Shell Programming and Scripting

Passing date formats in Perl: i.e. Jul/10/2007 -> 20070710 (yyyymmdd) - Perl

Hi , This script working for fine if pass script-name.sh Jul/10/2007 ,I want to pass 20070710(yyyymmdd) .Please any help it should be appereciated. use Time::Local; my $d = $ARGV; my $t = $ARGV; my $m = ""; @d = split /\//, $d; @t = split /:/, $t; if ( $d eq "Jan" ) { $m = 0 }... (7 Replies)
Discussion started by: akil
7 Replies

6. Shell Programming and Scripting

Passing arguments to Perl Function

Hi All, I am trying to pass an argument called "Pricelist" to a Perl function, then the function will open and print out the contents of the file named "Pricelist". But i can't seem to do it using my below code. Can any expert give some advice? #!/usr/local/bin/perl $DATABASE =... (1 Reply)
Discussion started by: Raynon
1 Replies

7. Shell Programming and Scripting

passing a hash to another script in perl

I have a script (say script1.sh ) and I am calling a script (say script2.sh) within the script1.sh. Here in script1.sh I have a hash ( say %hash1) and i have to pass this hash to script2.sh. Basically i have to do some processing in Scirpt2.sh based on the hash(key,values). I wanted to know how can... (2 Replies)
Discussion started by: ammu
2 Replies

8. Shell Programming and Scripting

Passing a file handler and an array from Perl to Shell Script

Hi there, I am trying to call a shell script from a Perl script. here is the code: @args = ("sh", "someshellprg.sh", "a file handler", "an array"); system(@args) == 0 or die "system @args failed: $?"; in the shell program, I examine if the arguments exits using: if then echo... (5 Replies)
Discussion started by: pinkgladiator
5 Replies

9. Shell Programming and Scripting

Need help passing variables in shell script to perl one-liner

I'm writing a script to automate some post-install tasks on RHEL4 servers. I need the following code to insert an 'A' in the middle of a string, then replace the string in a file. I know I can use sed to do this, but I'd like to use perl's in place edit so I don't have to write to a temp file,... (1 Reply)
Discussion started by: Xek
1 Replies

10. Shell Programming and Scripting

Passing variable to perl

I need a non-perl (bash) way to strip the path from a list of "find" results. Below is the perl version which I could use, if I could figure out how to call the script with a variable (like in sh, $1 is the variable passed in ./script variable) $file = "/path/to/file.txt"; # How do I... (2 Replies)
Discussion started by: TheCrunge
2 Replies
Login or Register to Ask a Question