我正在用 Perl 编写一个 Web 应用程序Dancer
。假设我在 中声明了一个变量our
,并将 的内容分配给它:$var
A.pm
file1
sub get_file_content {
our $var = <FILE1>;
}
我声明var
为our
因为我想稍后在另一个文件中使用它B.pm
:
sub display_file_content {
&display($A::var);
}
所以,get_file_content
执行之后,$var
应该是file1的内容。在display_file_content
执行之前,我更改了file1的内容,并单击了一些按钮来执行display_file_content
。正如假设的那样,显示了 file1 的原始内容。
然后我做了和上面一样的事情,只是改变了file1的内容后,我没有点击display_file_content
按钮。相反,我在另一个 Web 浏览器中对同一页面启动另一个 Web 请求。我get_file_content
是先执行的,直接点击按钮即可通过display_file_content
。file1 的修改内容显示在第二个 Web 浏览器中。这个是正常的。但是,当我在第一个网络浏览器中单击显示按钮时,它也显示了修改后的内容,而不是原来的内容。与在另一个 Web 浏览器中没有第二个 Web 请求的第一个实验相比,该变量似乎$var
在 Web 请求 - 响应过程中是共享的。但为什么会这样?你能给出一些解释吗?