我正在尝试编写一个持久/缓存脚本。代码看起来像这样:
... Memoize('process_fille'); print process_file($ARGV[0]); ... sub process_file{ my $filename = shift; my ($a, $b, $c) = extract_values_from_file($filename); if (exists $my_hash{$a}{$b}{$c}){ return $my_hash{$a}{$b}{$c}; } return $default; }
可以从Shell脚本在循环中调用,如下所示
value=`perl my_script.pl`;
有没有办法我可以以保持状态的方式调用此脚本。从一个电话到另一个电话。假设初始化’%my_hash’和调用extract_values_from_file都是一项昂贵的操作。
谢谢
如果示例中的%my_hash在其最终初始化状态下具有中等大小,则可以简单地使用序列化模块之一,例如Storable,JSON :: XS或Data :: Dumper,以在运行之间将数据保持为预组装形式。当不存在时生成一个新文件,并在存在时从那里重新加载准备好的内容。
另外,您提到过要循环调用此脚本。一个好的策略是不要立即在循环内部调用脚本,而是建立一个参数队列,然后在一次执行后将所有参数传递给脚本。脚本将设置其环境,然后遍历参数以简化工作,而无需为每个参数重做设置步骤。