Perl';它相当于pythonexec吗?

Perl';它相当于pythonexec吗?,python,perl,Python,Perl,Python法律代码: exec("def f():print 123"); f(); 什么是Perl等效结构,或者如何将eval中的符号绑定到Perl的eval中的当前作用域 eval("sub f(){ print 123;}"); f(); "Undefined subroutine &main::f" 问题不是实际的,因为它在第一个定义中有打印错误。您的子例程声明错误。尝试: eval("sub f { print 123 }"); f(); 另请参见:我不知道

Python法律代码:

  exec("def f():print 123"); f();
什么是Perl等效结构,或者如何将eval中的符号绑定到Perl的eval中的当前作用域

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

问题不是实际的,因为它在第一个定义中有打印错误。您的子例程声明错误。尝试:

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

另请参见:

我不知道您正试图实现什么,但string 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 子程序f在(eval 1)第1行重新定义。 123
我有印刷错误。eval(“sub f{print 123;}”);f();对于你提出的匿名函数技巧,我很满意,但我只是在子例程定义中犯了一个打印错误)原型为空有什么原因吗
sub(){..}
我想是的,有空的原型+一些冒号+Perl中的安静的eval调用模型=>所有这些都会在stackoverflow中导致不必要的问题)@Саа27这里是凌晨。“原型对间接子程序调用没有影响”。Np,我想我错过了什么。你真的不想这么做。你怎么知道他想做什么?他可能正在参加一场混乱的perl竞赛……字符串
eval
是危险的,因为它可能导致代码注入。除非你真正了解安全性,否则不要使用它。请参阅
perldocperlsec
Mmm,我想要的是动态执行生成代码,如python的exec…生成代码并将其提供给eval。不,我没有参加模糊竞赛,它也不是web项目的一部分……perl安全性在我目前的生活中对我来说绝对不感兴趣,但感谢链接)它实际上只是脚本中的打印错误,以及相当多的perl解释器行为。