创建一个动态Perl函数,该函数在函数声明时使用变量的值

Sco*_*ley 1 perl

我想创建一个动态函数,在声明函数时使用(计算?)变量的值.

下面的示例要求$ var作为全局变量存在,因此可以在调用函数时使用它:

my $var = 'something';

someFunction(sub { return $_[0] eq $var; });
Run Code Online (Sandbox Code Playgroud)

但我猜有一些方法来创建动态函数,所以它被声明如下:

someFunction(sub { return $_[0] eq 'something'; });
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点!?:)

Nem*_*emo 6

有点草率,但它的工作原理:

#!/usr/bin/env perl                                                             

use warnings;
use strict;

my $var = 'something';

my $f1 = sub { my $v = $_[0]; return sub { return $_[0] eq  $v } };

my $f2 = $f1->($var);

$var = 'other thing';

print $f2->('something');
Run Code Online (Sandbox Code Playgroud)

有了lambda,一切皆有可能.