【发布时间】:2019-10-17 14:50:28
【问题描述】:
我有 2 个 perl 脚本,其中 primary_script.pl 将通过将数组作为参数传递来调用 secondary_script.pl 脚本。
我的代码如下所示:
primary_script.pl
#!/usr/bin/perl
use Data::Dumper;
my @array = qw/1 2 3 4 5/;
print Dumper(\@array);
my $arr = \@array;
system("perl secondary_script.pl $arr") ;
print "END\n";
secondary_script.pl
#!/usr/bin/perl
my @var = @{$ARGV[0]};
print @var."\n";
我将数组引用作为参数传递给secondary_script.pl,并从那里取消引用该数组。
这里@var 打印0 作为结果,而不是primary_script.pl 传递的数组内容。
这是将数组作为参数传递给另一个 perl 脚本的正确方法吗?
【问题讨论】:
-
如果您将
use strict添加到您的程序中,您将看到一个警告:Can't use string ("ARRAY(0x55eaf6009578)") as an ARRAY ref while "strict refs" in use -
总是使用
use strict; use warnings; -
只有字符串可以作为参数传递(并且它们不能包含 NUL 字符)。您需要序列化数据并在孩子中反序列化。 JSON 可能是一个不错的选择。
标签: arrays perl perlscript