当前位置: 首页 > 面试题库 >

编写持久性Perl脚本

景信瑞
2023-03-14
问题内容

我正在尝试编写一个持久/缓存脚本。代码看起来像这样:

...
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
,以在运行之间将数据保持为预组装形式。当不存在时生成一个新文件,并在存在时从那里重新加载准备好的内容。

另外,您提到过要循环调用此脚本。一个好的策略是不要立即在循环内部调用脚本,而是建立一个参数队列,然后在一次执行后将所有参数传递给脚本。脚本将设置其环境,然后遍历参数以简化工作,而无需为每个参数重做设置步骤。



 类似资料:
  • 如果使用以下运行,似乎无法持久保存MySQL数据 我的理解是,在我的容器中,使用将其映射到mysql将数据存储到容器的本地machines目录,由于这种映射,即使容器被破坏,数据也应该保持不变。而容器只是db的客户端接口,可以看到本地目录,这是因为 尝试了这个答案,但没有成功。Docker-编写持久数据故障 编辑 如下所示更改了我的,并创建了一个dir,但现在当我运行时,容器不会启动,会抛出一个错

  • EJB 3.0,EJB 2.0中使用的实体bean在很大程度上被持久性机制所取代。 现在,实体bean是一个简单的POJO,它具有与表的映射。 以下是持久性API中的关键角色 - Entity - 表示数据存储记录的持久对象。 可序列化是件好事。 EntityManager - 持久性接口,用于对持久对象(实体)执行添加/删除/更新/查找等数据操作。 它还有助于使用Query接口执行查询。 Per

  • 调用init方法失败;嵌套的异常是javax。坚持不懈PersistenceException:[PersistenceUnit:默认值]无法生成Hibernate SessionFactory 在更换系统中的操作系统后,我遇到了这个异常。在我的应用程序运行MySQL 5.7和java 8之前。现在我把它改成了mySQL 8和java 8。代码没有任何变化。原因一定是什么?? 下面是日志:

  • 我刚开始使用docker,但我不明白一些事情。我只是使用docker-compose来使用PostgreSQL的基本映像,但我不知道如何在杀死docker甚至删除我的本地映像后使db中的数据持久化。这一切都可能吗? 这是我实际的docker-compose.yml: 也许我应该用体积?怎样

  • 编写HTTP/1.1和HTTP/2.0脚本 有时,我们希望编写一个快速的脚本而不会遇到创建类的麻烦。addons机制具有一种速记方式,可以将模块作为一个整体视为一个addon对象。这使我们可以将事件处理程序函数放在模块作用域中。例如,下面是一个完整的脚本,它向每个请求添加标头。 def request(flow): flow.request.headers["myheader"] = "v

  • 问题内容: 我正在尝试创建事务管理器,并将其与Hibernate for Oracle一起使用。 我的persistence.xml文件是: 在spring的applicationContext.xml中,我添加了: 但是,当我运行时: 我有一个例外: Hibernate基础文件文件除外。 可能是什么问题呢? Hibernate持久性如何知道引用Spring bean? 问题答案: 持久性提供程序