Python的法人代碼:Perl的等價於python exec?
exec("def f():print 123"); f();
什麼是一個Perl相當於建設或如何綁定的符號從EVAL電流範圍從Perl中的eval?
eval("sub f(){ print 123;}"); f();
"Undefined subroutine &main::f"
問題是不現實的,因爲它有印錯在它第一個定義。
Python的法人代碼:Perl的等價於python exec?
exec("def f():print 123"); f();
什麼是一個Perl相當於建設或如何綁定的符號從EVAL電流範圍從Perl中的eval?
eval("sub f(){ print 123;}"); f();
"Undefined subroutine &main::f"
問題是不現實的,因爲它有印錯在它第一個定義。
我不知道你想實現什麼,但字符串的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
我有錯字。 eval(「sub f {print 123;}」); F();對我工作正常 – bruziuz
你真的* *不希望這樣做 – Borodin
你怎麼知道是什麼他想要做什麼?他可能會進入混淆的perl比賽... – GreenAsJade
字符串'eval'是危險的,因爲它可能導致代碼注入。除非你真的瞭解安全性,否則不要使用它。請參閱'perldoc perlsec' http://perldoc.perl.org/perlsec.html – shawnhcorey