Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Embedding a bash funtion in perl script

by choroba (Bishop)
on Oct 21, 2013 at 23:53 UTC ( #1059178=note: print w/replies, xml ) Need Help??

in reply to Embedding a bash funtion in perl script

Shell functions cannot be trully embedded into Perl code. There are several reasons why your code does not work:
  1. Function definition must contain parentheses in a shell.
  2. There is a missing do after the for.
  3. There is a missing semicolon after the first backquotes.
  4. The main problem: each backquotes are run in a separate subshell. You cannot define a function in one subshell and run it in a different one (if it is not its subshell).

You can store the definition in a Perl variable, though, and prepend it to any code that needs to use it (note that backquotes interpolate variables):

my $f = 'forloop () { for ((a=1;a<=5;a++)) ; do var="$a" echo "$var" done }'; my $result=`$f; forloop`; print $result;

Nevertheless, usually implementing the whole logic in Perl might get you the clearest code.

لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1059178]
and the daffodils sway...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2018-03-24 18:41 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (299 votes). Check out past polls.