gpt4 book ai didi

perl - 从 Perl 中的字符串执行整个 perl 程序

转载 作者:行者123 更新时间:2023-12-04 06:11:44 27 4
gpt4 key购买 nike

我有一个在文件中使用 Blowfish 加密的程序和第二个 perl 程序,它提示输入用于将其解密为字符串的密码,我希望不必将解密的源代码写入硬盘驱动器,尽管将它放在内存中并不是真正的问题,因为运行程序的人已经知道源。我想我可能会使用 eval 但我需要运行的程序有很多使用 Curses 和东西的输入/输出,所以 eval 不会工作,因为它只返回最后一个值......有谁知道如何实现这一点?

最佳答案

您可以使用 @INC钩子(Hook)来执行解密。然后你可以简单地requireuse加密的程序。例如,

# loader.pl
use Crypt::Rot13;
use File::Spec;
sub decrypt_line {
if ($_ ne '') {
my ($self, $state) = @_;
my ($crypt, $key) = @$state;
$crypt->charge($_);
($_) = $crypt->rot13($key);
return 1;
}
}
sub load_crypt {
my ($self, $filename) = @_;
print "Key?\n";
chomp(my $key = <STDIN>);
for my $prefix (@INC) {
open my $fh, '<', File::Spec->catfile($prefix, "$filename.r13") or next;
return ($fh, \&decrypt_line, [Crypt::Rot13->new(), $key]);
}
}
BEGIN {
unshift @INC, \&load_crypt;
}
require 'hello.pl';
# hello.pl.r13
cevag "Uryyb, jbeyq!\a";

$ perl loader.pl
key ?
13
Hello World !

关于perl - 从 Perl 中的字符串执行整个 perl 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7699819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com