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.

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