如何将 tcl 数组传递给 perl 命令行参数

How to pass tcl array to perl command line argument

我想从 tcl 调用 perl 脚本,我想在其中将 tcl 数组发送到 perl 命令行参数,以及如何在 perl 脚本中使用 inside

谢谢,

给定 Tcl 数组

array set ary {foo 11 bar 12 baz 13}

你可以像这样将它传递给 perl:

exec perl script.pl {*}[array get ary]

而在 perl 中,你可以说

my %hash = @ARGV;

演示(来自 shell 提示):

$ echo '
  array set ary {foo "11 22" bar 12 baz 13}
  puts [exec perl -MData::Dump=dd -e {my %hash = @ARGV; dd \%hash} {*}[array get ary]]
' | tclsh
{ bar => 12, baz => 13, foo => "11 22" }

tcl :

set ax(0) 5
set ax(1) 6
set values ""

set names [array names ax]

  foreach xc $names {
    lappend values $ax($xc)
  }

exec perl path_to_perl_script.pl $names $values

perl:

 my @ar1 = split(" ", $ARGV[0]);
 my @ar2 = split(" ", $ARGV[1]);

 my %hash = ();
 my $length = @ar1;

   for (my $i=0; $i < $length; $i++) {
    $hash{$ar1[$i]} = $ar2[$i];
   }

   foreach my $x (keys %hash) {
    print " $hash{$x}\n";
   }

输出: 6个 5