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

时间:2020-03-10 09:28:12

标签: perl tcl

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

谢谢

2 个答案:

答案 0 :(得分:1)

给出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" }

答案 1 :(得分:1)

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

相关问题