Я хочу перенести матрицу из одного файла perl в другой с помощью командной строки с обратными кавычками.
В первом файле perl, source.pl :
use warnings;
use strict;
my @matrix = (
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
);
my $results = `perl other_file.pl @matrix`; #option 1
# my $results = `perl other_file.pl '@matrix'`; #option 2
print $results;
На other_file.pl
use strict
use warnings
my @matrix_other = $ARGV[0];
print "mat_adress = ".$matrix_other[1][2]."\n";
После запуска source.pl вывод терминала:
- с опцией 1: sh: 1: Синтаксическая ошибка: "(" неожиданно
- с опцией 2: нельзя использовать строку ("ARRAY(0x6c0cb8) ARRAY(0x6df410)"...) в качестве ссылки ARRAY, пока "строгие ссылки" используются в строке 5 other_file.pl.
Я также безуспешно пытался использовать символические ссылки в other_file.pl (вывод было: «Не ссылка на МАССИВ в other_file.pl»)
Есть идеи ? Большое спасибо.
PS: Нет проблем с простой переменной $var в командной строке;
ARRAY(0x6c0cb8)
— это ссылки на массивы, которые были преобразованы в строки. Также нельзя передать одну переменную в другую Perl-программу через такую оболочку — если вы хотите этого, вам нужно соединить программы, использующие Perl. - person TLP   schedule 23.11.2014Storable
может помочь? - person Sobrique   schedule 23.11.2014