Python法律代码:
exec("def f():print 123"); f();
什么是Perl等效结构或如何将符号从eval绑定到当前作用域的Perl?eval?
eval("sub f(){ print 123;}"); f();
"Undefined subroutine &main::f"
问题不是实际问题,因为它在第一个定义中有错误印刷。
答案 0 :(得分:4)
答案 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