Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: run perl script with cmd line in shell

by Anonymous Monk
on Apr 16, 2012 at 13:17 UTC ( [id://965307]=note: print w/replies, xml ) Need Help??


in reply to Re: run perl script with cmd line in shell
in thread run perl script with cmd line in shell

Hi MidLifeXis, Thanks.Correct Exactely.

1)Share the script to the remote machine and execute it from that shared location.

--> I can't do that. may be the script given as a patch,that can't put into server that is dynamic

2)Copy the script.pl to the remote machine and run it from there. There are potential race conditions between the copy / execute and the execute /

--> Same above said reason, i cant do that

3)Embed the command line arguments into the top of your script.pl, perhaps as you are sending it across the wire to perl. This would require some pre-processing of the script and some assumptions of where you can embed the code - if I were to do it this way, I would probably have a token of some sort in the script that I would replace with my parameters

--> The cmd line argumetns are also dynamic in nature..but i dont understand this entire statment correctely. can you give an example ?

4)Run the command remotely using the -e or -E flag to perl, and embedding the script on the remote command invocation. This would be my last choice for something that is any more complex than dead simple unless I could ensure that quotes were properly escaped, newlines handled, length of the command line accounted for, and so on. --> I think this will work out may be..i will give it a try and also i am trying with sed cmd as well

  • Comment on Re^2: run perl script with cmd line in shell

Replies are listed 'Best First'.
Re^3: run perl script with cmd line in shell
by MidLifeXis (Monsignor) on Apr 16, 2012 at 13:31 UTC
    3)Embed the command line arguments into the top of your script.pl, perhaps as you are sending it across the wire to perl. This would require some pre-processing of the script and some assumptions of where you can embed the code - if I were to do it this way, I would probably have a token of some sort in the script that I would replace with my parameters --> The cmd line argumetns are also dynamic in nature..but i dont understand this entire statment correctely. can you give an example ?

    In your script you could have something like:

    # Earlier stuff in the script... # Fill in the arguments if running remotely @ARGV ||= qw(%%REPLACEDTOKEN%%); # ... and back it out if @ARGV should really be empty @ARGV = () if $ARGV[0] eq "\%\%REPLACEDTOKEN\%\%"; # Rest of your script
    At this point, you would use something locally to replace '%%REPLACEDTOKEN%%' with your parameters, and pipe that to a perl call on the remote machine.

    sed -e .... < script.pl | ssh user@remote perl

    I still have concerns that this is the most robust solution to your problem.

    Do your scripts use any temporary files? If so, I would seriously reconsider your answer to number 2. If you can write temp files, you can also write a temporary perl script.

    --MidLifeXis

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://965307]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2024-04-26 01:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found