Perl - Maple Help

Online Help

All Products    Maple    MapleSim


CodeGeneration

  

Perl

  

translate Maple code to Perl code

 

Calling Sequence

Parameters

Description

Examples

Compatibility

Calling Sequence

Perl(x, cgopts)

Parameters

x

-

expression, list, rtable, procedure, or module

cgopts

-

(optional) one or more CodeGeneration options

Description

• 

The Perl(x, cgopts) calling sequence translates Maple code to Perl code.

  

- If the parameter x is an algebraic expression, then a Perl statement assigning the expression to a variable is generated.

  

- If x is a list, Maple Array, or rtable of algebraic expressions, then a sequence of Perl statements assigning the elements to a Perl array is produced.  Only the initialized elements of the rtable or Maple Array are translated.

  

- If x is a list of equations nm=expr, where nm is a name and expr is an algebraic expression, then this is understood as a sequence of assignment statements.  In this case, the equivalent sequence of Perl assignment statements is generated.

  

- If x is a procedure, then a Perl class is generated containing a function equivalent to the procedure, along with any necessary import statements.

  

- If x is a module, then a Perl class is generated, as described on the PerlDetails help page.

• 

The parameter cgopts may include one or more CodeGeneration options, as described in CodeGenerationOptions.

• 

For more information about how the CodeGeneration package translates Maple code to other languages, see Translation Details. For more information about translation to Perl in particular, see PerlDetails.

Examples

For a description of the options used in the following examples, see CodeGenerationOptions.

withCodeGeneration:

Translate a simple expression and assign it to the name w in the target code.

Perlx+yz2xz,resultname=w

$w = -2 * $x * $z + $y * $z + $x;

Translate a list and assign it to a Perl reflist with the name w in the target code.

Perlx,2y,5,z,resultname=w

$w = [[$x,2 * $y],[5,$z]];

Translate a computation sequence.  Optimize the input first.

css=1.0+x,t=lnsexpx,r=expx+xt:

Perlcs,optimize

$s = 0.10e1 + $x;
$t1 = log($s);
$t2 = exp(-$x);
$t = $t2 * $t1;
$r = $x * $t + $t2;

Translate a procedure.

f := proc(x, y, z) return x*y-y*z+x*z; end proc:

Perlf

#!/usr/bin/perl

sub f
{
  local($x, $y, $z) = @_;
  return($y * $x - $y * $z + $x * $z);
}

Translate a procedure containing an implicit return.  A new variable is created to hold the return value.

f := proc(n)
  local x, i;
  x := 0.0;
  for i to n do
    x := x + i;
  end do;
end proc:

Perlf

#!/usr/bin/perl

sub f
{
  local($n) = @_;
  local($x, $i, $cgret);
  $x = 0.0e0;
  for ($i = 1; $i <= $n; $i++)
  {
    $x = $x + $i;
    $cgret = $x;
  }
  return($cgret);
}

Translate a procedure iterating over a list and concatenating a string at each step.

f := proc(L::list)
  local x, s := "";
  for x in L do
    s := cat(s, x);
  end do;
end proc:

Perlf

#!/usr/bin/perl

sub f
{
  local($L) = @_;
  local($x, $s, $cgret);
  $s = "";
  foreach $x (@{$L})
  {
    $s = $s . $x;
    $cgret = $s;
  }
  return($cgret);
}

Translate a module.

m := module() export p; local q;
    p := proc(x,y) if y>0 then trunc(x); else ceil(x); end if; end proc:
    q := proc(x) sin(x)^2; end proc:
end module:

Perlm&comma;resultname=t0

#!/usr/bin/perl

use POSIX;

package m;

  sub p
  {
    local($x, $y) = @_;
    if (0 < $y) {
      return(int($x));
    } else {
      return(ceil($x));
    }
  }

  sub q
  {
    local($x) = @_;
    return(sin($x) ** 2);
  }

Translate a linear combination of hyperbolic trigonometric functions.

Perl2coshx7tanhx

$cg = 2 * cosh($x) - 7 * tanh($x);

Translate a procedure with no return value containing a printf statement.

f := proc(a::integer, p::integer)
  printf("The integer remainder of %d divided by %d is: %d\n", a, p, irem(a, p));
end proc:

Perlf

#!/usr/bin/perl

sub f
{
  local($a, $p) = @_;
  printf("The integer remainder of %d divided by %d is: %d\n", $a, $p, $a % $p);
}

Compatibility

• 

The CodeGeneration[Perl] command was introduced in Maple 18.

• 

For more information on Maple 18 changes, see Updates in Maple 18.

See Also

CodeGeneration

CodeGenerationOptions

PerlDetails

trademark

TranslationDetails