Dancer2获取协议的奇怪行为

时间:2017-07-21 11:35:04

标签: perl backend dancer

我正在使用dancer2作为后端工具构建一个webapp。我已经实现了以下主要方法:

#!/usr/bin/env perl
use Dancer2;

get '/mything/:text' => sub {
    my @myArray = ("");
    # Fill the array with DB data;
    return join "<br>", @myArray;
};

dance;

在第二次使用get方法之前,一切都很好。假设@myArray为空,它从第一次执行中填充。

作为一个肮脏的修复,我在方法结束时将@myArray初始化为(""),但我认为这很难看。你有这方面的经验吗?

2 个答案:

答案 0 :(得分:3)

为了测试这一点,我将代码扩展为以下内容:

#!/usr/bin/env perl
use Dancer2;

get '/mything/:text' => sub {
    my @myArray = localtime;
    # Fill the array with DB data;
    return join "<br>", @myArray;
};

dance;

使用localtime()是我每次发出请求时想到的(稍微)不同的数组最简单的方法(假设我每秒不会发出多个请求)。

这完全符合我的预期。我运行plackup app.psgi并访问http://localhost:5000/mything/foo,我看到了我期望的数组。当我刷新页面时,我得到一个不同的数组。

所以舞者的工作方式与我期望的一样。如果你看到不同的行为,那是因为你做了不同的事情。在我们看到更多代码之前,我们无法帮助您弄清楚它是什么。

答案 1 :(得分:0)

问题与在严格模式下不使用perl有关。代码原样,在OSX 11.1中正常工作,但在Ubuntu 16.04中没有。因此,经过一些测试,我发现我用来从数据库中填充数组的一些变量未正确初始化。在初始化它们之后,一切都在OSX和Ubuntu中正常工作。