如何在两个不同的 perl 脚本之间共享/导出全局变量?
我们如何在两个不同的 Perl 脚本之间共享或导出全局变量。
情况如下:
first.pl
#!/usr/bin/perl
use strict;
our (@a, @b);
.........
second.pl
#!/usr/bin/perl
use strict;
require first.pl;
我想使用全局变量 (@a
, @b
) 在 first.pl 中声明
另外,假设第二个 perl 文件中有一个与第一个 perl 文件相同的变量。但我想使用第一个文件的变量。如何实现这一目标?
How do we share or export a global variable between two different perl scripts.
Here is the situation:
first.pl
#!/usr/bin/perl
use strict;
our (@a, @b);
.........
second.pl
#!/usr/bin/perl
use strict;
require first.pl;
I want to use global variable (@a
, @b
) declared in first.pl
Also,suppose there's a variable in second perl file same as first perl file. But I want to use first file's variable. How to achieve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一般来说,当您处理多个文件并在它们之间导入变量或子例程时,您会发现随着项目的增长,所需的文件最终会变得有点复杂。这是因为所有内容都共享一个公共名称空间,但某些变量在某些文件中声明,而在其他文件中则没有声明。
在 Perl 中解决这个问题的通常方法是创建模块,然后从这些模块中导入。在这种情况下:
然后使用该模块:
use
行实际上意味着:import
方法来自Exporter
。当它被调用时,它会将@EXPORT
数组中的变量导出到调用代码中。查看 Exporter 和 perlmod 应该给你一个起点。
In general, when you are working with multiple files, and importing variables or subroutines between them, you will find that requiring files ends up getting a bit complicated as your project grows. This is due to everything sharing a common namespace, but with some variables declared in some files but not others.
The usual way this is resolved in Perl is to create modules, and then import from those modules. In this case:
and then to use the module:
That
use
line actually means:The
import
method comes fromExporter
. When it is called, it will export the variables in the@EXPORT
array into the calling code.Looking at the documentation for Exporter and perlmod should give you a starting point.
是的,他们将共享全局变量。你觉得这有什么问题吗?
示例:
first.pl:
second.pl:
给予:
They will share global variables, yes. Are you seeing some problem with that?
Example:
first.pl:
second.pl:
Giving:
不能使用 package 并导出变量吗?
Cant you use package and export the variable?