我正在使用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
初始化为("")
,但我认为这很难看。你有这方面的经验吗?
答案 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中正常工作。