Sponsored Content
Top Forums Shell Programming and Scripting Problems passing shell arguments to perl Post 302887124 by johnny_canucl on Wednesday 5th of February 2014 08:55:43 PM
Old 02-05-2014
Question 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:

Code:
perl -pi -e 's/oldstring/newstring/g' `find ./ -name *.html`

But, I can never remember the specific commends (getting old), so I generally dump this sort of thing into a script. Say, a bash script. But, I'm having a heck of a time getting the script to take command line args and pass them to the perl script. Imagine said script is called replace_string

Suppose I want to change the occurrence of 2013 to 2014. What I want to be able to do is type

> replace_string 2013 2014

So in my bash script, I've tried the following:

Code:
#!/bin/bash
echo "target string -- $1"
echo "new string -- $2"
perl -pi -e 's/$1/$2/g' `find ./ -name *.html`

But, this doesn't work. I've tried putting double-quotes around $1 and $2, but..nada.

I'm guessing this is a simple no-brainer sort of thing, but I haven't sussed it out yet. Pointers to the obvious appreciated.

(Note: I've no doubt there are other ways to do the inplace search and replace, but that isn't the point here -- the problem is general -- passing bash shell comand args to a perl function)
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Passing arguments to a Perl script

I am playing around with Perl and wrote the script below that is executed from the command line, it will split data up in a file based on a value supplied. When executed you provide two arguments - the file that contains the data to be split and the character you want to split by. It works as... (4 Replies)
Discussion started by: jyoung
4 Replies

2. UNIX for Dummies Questions & Answers

passing arguments from shell to java

Hi: I have a script called runjava: The content --- search=$1 dpi=$2 prefix=$3 input=$4 output=$5 java -Djava.library.path=./lib/path/Lib -classpath .:lib/path/Lib/mylib.jar myclass $search $dpi $prefix $input $output How does myclass parse arguments --- String searchTerm =... (3 Replies)
Discussion started by: kenpeter
3 Replies

3. Shell Programming and Scripting

passing runtime arguments to a shell script...

hi I am new to shell programming.....my question is while running one of my shell program it stops in between to accept input from the user and proceeds furthur after giving input....I want to know whether I can set this input through some files so that the shell acript reads the input from the... (10 Replies)
Discussion started by: santy
10 Replies

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

5. Shell Programming and Scripting

Passing Arguments in Shell Scripts

Hello everybody! First time posting here:) Right, I am trying to pass arguments in my shell scripts using $1, $2 and $3 etc using if else statement........ This is my shell script which is based on serching the google website #!/bin/sh wget -t1 -E -e robots=off - -awGet.log -T 200 -H... (47 Replies)
Discussion started by: kev_1234
47 Replies

6. Programming

Passing arguments from java to script shell

Hello Please i want to pass parameter (the string s) to the shell script: Quote: String s="Hello"; Process process = Runtime.getRuntime().exec("sh script1.sh"); How can i do please? Thank you (0 Replies)
Discussion started by: chercheur857
0 Replies

7. Shell Programming and Scripting

Passing arguments to a perl script

Hi I need to pass comma seperated arguments to a perl script? It is like: Exect.pl -d GUI1,GUI2,GUI3 and I need to store these argsGUI1,GUI2,GUI3 in an array. can anyone suggest how to do that: (1 Reply)
Discussion started by: rkrish
1 Replies

8. Shell Programming and Scripting

Passing multiple arguments to a shell script

Hi Gurus, Need some help with the shell scripting here. #!/bin/ksh ps -ef | grep -i sample.ksh | grep -v grep > abc.txt if then echo "sample.ksh is executing" else echo "sample.ksh is not executing" fi (1 Reply)
Discussion started by: jayadanabalan
1 Replies

9. Shell Programming and Scripting

Shell scripting with passing arguments

Hi All, I am using the script for creating local queue and passing the arguments while running the script as below n=0 while do e=`expr $n + 3` echo 'DEFINE QL('$e') MAXDEPTH('$6') MAXMSGL('$7') DEFPSIST('$8') '$9'' | /apps/mqm_opt/bin/runmqsc $2 n=`expr $n + 1` done Running the... (5 Replies)
Discussion started by: Anusha M
5 Replies

10. Shell Programming and Scripting

C shell script passing arguments problem.

I found something insteresting when I tested passing arguments into my scripts. My scripts is as below. % cat passarg.env #!/bin/csh echo "passarg: argv = $argv argv = $argv" passarg1.env $* % cat passarg1.env #!/bin/csh echo "passarg1: argv = $argv argvp=$argv" set str = "test... (5 Replies)
Discussion started by: bestard
5 Replies
Module::Load(3pm)					 Perl Programmers Reference Guide					 Module::Load(3pm)

NAME
Module::Load - runtime require of both modules and files SYNOPSIS
use Module::Load; my $module = 'Data:Dumper'; load Data::Dumper; # loads that module load 'Data::Dumper'; # ditto load $module # tritto my $script = 'some/script.pl' load $script; load 'some/script.pl'; # use quotes because of punctuations load thing; # try 'thing' first, then 'thing.pm' load CGI, ':standard' # like 'use CGI qw[:standard]' DESCRIPTION
"load" eliminates the need to know whether you are trying to require either a file or a module. If you consult "perldoc -f require" you will see that "require" will behave differently when given a bareword or a string. In the case of a string, "require" assumes you are wanting to load a file. But in the case of a bareword, it assumes you mean a module. This gives nasty overhead when you are trying to dynamically require modules at runtime, since you will need to change the module notation ("Acme::Comment") to a file notation fitting the particular platform you are on. "load" eliminates the need for this overhead and will just DWYM. Rules "load" has the following rules to decide what it thinks you want: o If the argument has any characters in it other than those matching "w", ":" or "'", it must be a file o If the argument matches only "[w:']", it must be a module o If the argument matches only "w", it could either be a module or a file. We will try to find "file.pm" first in @INC and if that fails, we will try to find "file" in @INC. If both fail, we die with the respective error messages. Caveats Because of a bug in perl (#19213), at least in version 5.6.1, we have to hardcode the path separator for a require on Win32 to be "/", like on Unix rather than the Win32 "". Otherwise perl will not read its own %INC accurately double load files if they are required again, or in the worst case, core dump. "Module::Load" cannot do implicit imports, only explicit imports. (in other words, you always have to specify explicitly what you wish to import from a module, even if the functions are in that modules' @EXPORT) ACKNOWLEDGEMENTS
Thanks to Jonas B. Nielsen for making explicit imports work. BUG REPORTS
Please report bugs or other issues to <bug-module-load@rt.cpan.org<gt>. AUTHOR
This module by Jos Boumans <kane@cpan.org>. COPYRIGHT
This library is free software; you may redistribute and/or modify it under the same terms as Perl itself. perl v5.18.2 2013-11-04 Module::Load(3pm)
All times are GMT -4. The time now is 09:19 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy