Perl相当于python exec?

时间:2015-05-27 10:26:29

标签: python perl

Python法律代码:

  exec("def f():print 123"); f();

什么是Perl等效结构或如何将符号从eval绑定到当前作用域的Perl?eval?

  eval("sub f(){ print 123;}"); f();
  "Undefined subroutine &main::f"

问题不是实际问题,因为它在第一个定义中有错误印刷。

2 个答案:

答案 0 :(得分:4)

你有一个错误的子程序声明。尝试:

eval("sub f { print 123 }"); f();

另请参阅:http://perldoc.perl.org/perlsub.html

答案 1 :(得分:2)

我并不确切知道你想要实现的目标,但字符串eval会将该函数放入包名称空间中(如果已经存在该名称的函数,则会重新定义)。如果你只需要一个地方:

my $f = sub { my $v = shift; sub { print $v } }->(123);
...
$f->();

示例:

#!/usr/bin/env perl -l

use strict;
use warnings;

sub f () { print 456 };

eval "sub f() { print 123 }";

f();

my $f = sub { my $v = shift; sub { print $v } }->(123);

$f->();

输出:

Subroutine f redefined at (eval 1) line 1.
123
123